码迷,mamicode.com
首页 > 编程语言 > 详细

Java NIO 简述

时间:2020-06-19 00:56:13      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:好处   关联   src   alt   线程并发   选择器   内存   关联关系   体系   

   Java NIO 由三个核心组件构成:Selector (选择器), Channel(通道) , Buffer (缓冲区)。 虽然NIO体系还是有其它组件,比如:PipeFileLock等 它们只是与三个组件结合实际使用类。

    三者关联关系:

技术图片

 

一个线程对应一个selector, 一个selector 对应多个channel。 多个通道中可以相互切换,是根据事件event来决定使用那个channel。

  单线程处理多通道的好处,处理通道所需要的线程数更少。一个线程可以处理所有的通道。在操作系统层面,线程的上下文切换是成本非常高。每个线程都会对应操作系统的内存。因此,线程数越少越好。

  但随着CPU技术突破,多核超线程出现,若使用单线程来处理,有点浪费cpu资源。

  channel是指可以向其写入数据或读取数据的对象。 类似于IO中的strem。但是所有数据的读写都由buffer来进行的,channel不进行任何处理。

  一个stream只能是InputStream或者OutputStream。但channel是双向的,channel打开后,即可向其写入数据,也可以同时读取数据。

  buffer本身就是一块内存,底层使用数组来实现。buffer非线程安全,因此,在多线程并发的环境下,当访问buffer时,需要做适当的线程控制。

 

Java NIO 简述

标签:好处   关联   src   alt   线程并发   选择器   内存   关联关系   体系   

原文地址:https://www.cnblogs.com/song27/p/13160712.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!