BIO模型存在三个socket:
ServerSocket:专门用来监听是否有来自客户端的连接
accept返回的Socket:专门用于处理客户端请求的socket
Socket:客户端的socket
BIO由于accpet和read会阻塞,如果不使用多线程,read时候的阻塞会导致无法立即处理下一个客户端的连接。
如果使用多线程,如果某些线程不活跃,可能浪费CPU资源。
NIO可以设置通过configureBlocking设置accept为非阻塞的,对应操作系统五种IO模型介绍中的非阻塞IO模型。
NIO在感知各个连接的读写状态是通过操作系统内核轮询实现的。对应操作系统五种IO模型介绍中的多路复用IO模型。
在linux中,性能会更高一些,linux内核通过内核函数epoll实现被动感知,能有效解决多个连接不活跃的问题。
epoll的原理:
epoll原理详解及epoll反应堆模型_青萍之末的博客-CSDN博客
(就这样水了一篇博客)
原创文章,作者:彭晨涛,如若转载,请注明出处:https://www.codetool.top/article/nio%e5%ba%95%e5%b1%82%e5%8e%9f%e7%90%86-epoll/
相关推荐
-
深入理解java虚拟机第三版读书笔记08
以下是第七章 虚拟机类加载机制的内容 概述 Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,...
-
Java基础查缺补漏04
继续我的复习刷题 接口方法可以使用abstract修饰 问题: java接口的方法修饰符可以为?(忽略内部接口) A. privateB. protectedC. finalD. ...
-
Collection接口研究
以下内容基于jdk1.8 接口Collection分析 img 该接口实现了接口Iterable 方法: int size(); 返回元素的个数 boolean isEmpty()...
-
ThreadLocal源码分析和相关理解
总结 总结放前面防止太长不看: 每个线程都有一个threadLocals字段,是一个ThreadLocalMap的实例,所有的ThreadLocal代表的线程私有数据都存放在这里面...
-
深入理解java虚拟机第三版读书笔记13
以下是第十三章 Java内存模型与线程的内容 线程安全 当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任...
-
Java中的四种内部类
我发现最近真是越来越没有东西写了。。。不可能天天学习新知识啊,最近在复习阶段了,复习的东西大多数是博客里写过的/(ㄒoㄒ)/ 复习Java基础的时候认真看了一下Java的内部类,这...
-
Java中SPI机制介绍和源码分析
本文参考资源: 高级开发必须理解的Java中SPI机制 - 简书 什么是SPI SPI全称为Service Provider Interface,是一种服务发现机制。SPI 的本质...
-
深入理解java虚拟机第三版读书笔记01
做笔记之前的感言 谈到《深入理解java虚拟机》,在业内可太有名了,是国内的一位大神写的一本关于java虚拟机的畅销书,基本上对java稍有深入的程序员都听说过这本书。不过遗憾的是...
-
Java网络套接字Socket编程
Socket概述 Socket,译作网络套接字,是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。网络套接字与一个应用进程(ip和端口号)绑定。 Socket与Ser...
-
详解java中的unicode编码(码点)
致谢: 本文参考网页:Unicode字符集以及UTF-8,UTF-16编码的总结 - vcj1009784814的博客 - CSDN博客 Unicode unicode的码点从U+...