系列文章目录
01-4 JVM-Java IO模型
文章目录
一、IO/NIO模型
1.阻塞IO模型
最传统的一种IO模型,会发生阻塞现象。用户线程发送IO请求,内核查看数据是否就绪,若未就绪会开始等待,此时线程处于阻塞状态,交出CPU。当数据就绪后,内核将数据拷贝到用户线程,并返回结果给用户线程,用户线程接触block状态。
典型的IO阻塞例子:data = socket.read();
2.非阻塞IO模型
用户可以立马得到一个结果,但结果是error时,说明数据并没有准备好。此时用户线程可以再次发送read操作,直到返回一个正确的数据。
这样可能会导致用户线程一直占用CPU。
while(true) {
data = socket.read(