43、Nio(多线程优化(问题解决))

Nio(多线程优化(问题解决))

解决方式(模拟netty):

第一步:我们都让他在worker0线程中处理(初始化和注册)这样我们就能控制其先后顺序了

注意:!!!但是我们上面还被boss线程调用的(刚开始worker线程还没启动怎么去调动嘛),只有后面我们worker线程启动去运行run方法才是worker0线程运行的。所以我们要放进run里面

第二步:我们用一个队列来解耦(队列,线程通信)

1、队列里面加任务,但这个任务并没有立即执行

2、我们在select后面将队列的东西取出来(queue.poll)执行(.run)(可能为空所以要判断下)

  1. 我们用wakeup(主动唤醒)select阻塞,没有事件的时候select阻塞,但是有事件就唤醒起来运行了

测试:

 

猜你喜欢

转载自blog.csdn.net/logtcm4/article/details/127832616