Skip to content

pandboy/IOStudy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 

Repository files navigation

Java IO

这里讨论三种网络IO

  • 1、BIO 同步阻塞IO
  •      服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情,会造成不必要的线程开销,当然可以通过线程池机制改善。

         举个例子:小明去买包子,然后包子没熟,就一直等到包子熟了才买到离开。
    ![alt text](./resource/img/bio.jpg "同步阻塞IO")
  • 2、NIO 同步非阻塞IO
  •      服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。

         举个例子:小明去买包子,包子没熟,小明就低头玩手机,时不时回来问下包子好了没,直到老板说包子好了,小明又转回去买到包子了。

    ![alt text](./resource/img/nio.jpg "同步非阻塞IO")
  • 3、AIO 异步非阻塞IO
  •      服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理

         举个例子:小明去买包子,但是包子还没做好,然后小明留下地址走了,回去做其他事情了,包子做好了,老板叫哒哒外送把包子送到小明留的地址,小明终于吃到了包子。

    ![alt text](./resource/img/aiojpg.jpg "异步同步非阻塞IO")

    About

    Java网络IO

    Resources

    Stars

    Watchers

    Forks

    Releases

    No releases published

    Packages

    No packages published

    Languages