(否则中断后,数据丢失了)
在java中,每接到一个连接,便copy主线程(java进程) 一份作为子线程 去处理客户端的连接来解决阻塞的问题,这使 java web 服务端能够以多线程的形式处理多个客户端的连接...,线程需要能够切换,回来还能继续执行;
方案 : 通过添加并维护客户端连接 (文件描述符) 的状态位 ,使同一线程在处理不同连接时,能够根据上次切换前的处理进度继续处理;
状态位
服务端接收客户端连接事件...selector(epoll)
问题 : 大量不活跃连接的情况下,一个线程遍历所有的连接(文件描述符)会造成很多无效的检查
方案 : 为了避免这种情况,专门开辟一块区域[epoll存储区域],用于存储活跃的...关键 : 怎么把发生变化的文件描述符放进[epoll存储区域]去呢?...最终方案 : 不同的连接(文件描述符) 数据通过网卡到达之后,会将数据缓存到网卡的内存中,同时产生一个内核硬中断,内核线程会产生一个中断事件,通过中断事件将这个文件描述符放到[epoll存储区域]
那么