摘要: 我们知道java中的IO经历了BIO到NIO再到AIO的发展,具体来讲的话BIO是同步阻塞式IO,NIO是同步非阻塞式IO,而AIO是异步非阻塞式IO,前面我们分析了BIO和NIO的用法,至于AIO目前我还没有研究的想法,先把BIO和NIO研究清楚了再说吧,这篇博客我对前面的内容进行总结,如果你没有 阅读全文
posted @ 2017-10-13 18:09 songjy2116 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 前两篇博客我们通过将accept和read设置成非阻塞式的方式实现了同步非阻塞模式,但是缺点在于在服务端需要为每个客户端都要创建一个线程来处理每个客户端的请求,这点相对来说比较耗费服务端资源,比如我们通常用到的Socket长连接用于心跳检测,其实客户端根本就没有数据要发送,只是想要告诉服务端我还活着 阅读全文
posted @ 2017-10-13 18:08 songjy2116 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 在上篇文章的最后,我们提到了,使用了多线程只是能够实现对"业务逻辑处理"的多线程,但是对于数据报文的接收还是需要一个一个来的,也就是我们上面见到的accept以及read方法阻塞问题,多线程是根本解决不了的,那么首先我们来看看accept为什么会造成阻塞,accept方法的作用是询问操作系统是否有新 阅读全文
posted @ 2017-10-13 18:07 songjy2116 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 这篇是讲解NIO的准备篇; 在JDK1.4 NIO出现之前,我们通常用到的IO都是BIO也叫同步阻塞式IO,他是面向流的,一个输入流产生一个字节的数据,一个输出流消费一个字节的数据,那么这里的阻塞主要体现在什么地方呢?比如我们从一个文件中读取数据的话,调用InputStream.read()方法,这 阅读全文
posted @ 2017-10-13 18:04 songjy2116 阅读(89) 评论(0) 推荐(0) 编辑