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

首页|软件分类|下载排行|最新软件|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.sopisoft.net 【绿软下载站】 版权所有 软件发布

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