纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

java模型IO阻塞与非阻塞 Java网络编程之IO模型阻塞与非阻塞简要分析

DrLai   2021-09-15 我要评论
想了解Java网络编程之IO模型阻塞与非阻塞简要分析的相关内容吗,DrLai在本文为您仔细讲解java模型IO阻塞与非阻塞的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:java网络编程,IO模型,阻塞与非阻塞,下面大家一起来学习吧。

1.阻塞I/O模型

阻塞IO模型是常见的IO模型,在读写数据时客户端会发生阻塞。阻塞IO模型的工作流程为:

1.1在用户线程发出IO请求之后,内核会检查数据是否就绪,此时用户线程一直阻塞等待内存数据就绪;

1.2在内存数据就绪后,内核将数据复制到用户线程中,并返回I/O执行结果到用户线程,此时用户线程将解除阻塞状态并开始处理数据。

典型的阻塞I/O模型的例子为data= socket.read(),如果内核数据没有就绪, Socket线程就会一直阻塞在 reado中等待内核数据就绪。

2.非阻塞I/O模型

非阻塞I/O模型指用户线程在发起一个操作后,无须阻塞便可以马上得到内核返回的一个结果。如果内核返回的结果为fase,则表示内核数据还没准备好,需要稍后再发起I/O操作。一旦内核中的数据准备好了,并且再次收到用户线程的请求,内核就会立刻将数据复制到用户线程中并将复制的结果通知用户线程。
在非阻塞IO模型中,用户线程需要不断询问内核数据是否就绪,在内存数据还未就绪时,用户线程可以处理其他任务,在内核数据就绪后可立即获取数据并执行相应的操作。典型的非阻塞IO模型一般如下:

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Test7 {
    public static void main(String[] args) throws IOException {
        ServerSocket socket=new ServerSocket();
        while(true){
            Socket data=socket.accept();
            if (data!=null) {
                //数据处理完毕
                break;}
            else {
                //内核数据未处理完成,进行其他线程业务
            }
        }
    }
}

相关文章

猜您喜欢

  • Mybatis Plus BaseMapper注入 浅谈Mybatis Plus的BaseMapper的方法是怎样注入的

    想了解浅谈Mybatis Plus的BaseMapper的方法是怎样注入的的相关内容吗,王伟王胖胖在本文为您仔细讲解Mybatis Plus BaseMapper注入的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Mybatis,Plus,BaseMapper注入,Mybatis,Plus,BaseMapper,下面大家一起来学习吧。..
  • Java List集合去重 Java关于List集合去重方案仔细讲解

    想了解Java关于List集合去重方案仔细讲解的相关内容吗,JavaEdge.在本文为您仔细讲解Java List集合去重的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Java,List集合去重,Java,List集合,下面大家一起来学习吧。..

网友评论

Copyright 2020 www.ben10gamesx.com 【Win11软件站】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式