IO那些事13-IO的思考

多个ServerBootstrap可以实现一套计算资源,不同的处理逻辑在这里插入图片描述

IO密集型和计算密集型在这里插入图片描述

IO密集型就是和kernel打交道很多,会有比较多的系统调用。
计算密集型则相反,更多的是在单纯用CPU做计算,而不怎么与内核打交道。

正常来说,网卡到程序的过程中一定伴随着中断操作的干预,而当网卡数据来临非常频繁时,底层会进行优化,内核会关闭中断,然后直接让CPU疯狂从网卡的buffer中取出数据到内核的buffer中,且这个过程是底层系统硬件实现的。 但即使是这样,如果我们程序不尽快取走内核buffer中的数据,造成积压,还是会使得数据消费不过来,也就由此有划分了IO线程和Executor线程,不让两者掺杂,尽量让两者并行起来。

Selector操作在java中的实际含义

selector.select()是系统调用,将内核中的就绪状态取到用户内存(JVM的直接内存)中,
selector.selectedkeys()则是将直接内存的状态集合拷贝一份到JVM堆空间中。
并且每一个状态取出后,需要使用remove,把它从JVM直接内存中移除掉,否则下一次selectedkeys还会将此状态取出(而此状态实际上已经没数据了)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值