转载

网络编程之 Java NIO,你会了吗?

一、 BIO和 NIO 的区别

1 BIO的工作流程

1.1操作系统的 2 个空间

名称 简单介绍
内核空间 32 位 4G 内存的系统中,1G 位内核空间,此空间存放核心指令等操作,按运行特权 Ring0 来操作,执行时,称为运行在内核态。操作如:磁盘读写、内存管理、网络通讯等
用户空间 用户运行的程序等,在用户空间执行命令,受到系统限制。可在用户态与内核态间切换(调用本地方法、系统操作等)。

1.2操作系统的 2 个空间|

网络编程之 Java NIO,你会了吗?

网络编程之 Java NIO,你会了吗?

网络编程之 Java NIO,你会了吗?

基于以上介绍,我们可以简单总结得以下结论:

  • BIO模式下应用向内核请求数据(从准备到拷贝)全程阻塞,应用只能干等直到请求完成。
  • BIO模式下是面向流的 I/O,这意味着我们需要从流中以先进先出的方式单向读取一个或多个字节,直至读取所有字节。
    • BIO模式下的服务端接收到客户端请求需要创建一个新的线程,线程创建、切换、销毁耗费了大量资源。

2. NIO的工作流程

网络编程之 Java NIO,你会了吗?

原文  https://segmentfault.com/a/1190000021418591
正文到此结束
Loading...