io与nio理解

1,io是阻塞的,而且线程会被socket连接一直占据。也就是说一个socket就会占用一个线程数组

2,当socket连接中没有数据传输时,线程会阻塞在read或者write方法,等待数据,线程任然被占用缓存

3,nio是非阻塞的,nio之因此能实现非阻塞,核心是nio有buffer与selector。buffer(缓冲区),经过流传递的数据不是直接传到read方法,而是写入到相似数组的一个缓存区。这样就能够不用read方法一直等待数据而形成的阻塞。那那什么时候调用read方法呢?selector,会独立占据一个线程,循环检测buffer的状态,当有数据可被读取时调用read方法。如此,在没有数据传输时,线程可被处理其余事情,好比另外一条socket。socket

相关文章
相关标签/搜索