Nio(多线程优化(问题解决))
解决方式(模拟netty):
第一步:我们都让他在worker0线程中处理(初始化和注册)这样我们就能控制其先后顺序了
注意:!!!但是我们上面还被boss线程调用的(刚开始worker线程还没启动怎么去调动嘛),只有后面我们worker线程启动去运行run方法才是worker0线程运行的。所以我们要放进run里面
第二步:我们用一个队列来解耦(队列,线程通信)
1、队列里面加任务,但这个任务并没有立即执行
2、我们在select后面将队列的东西取出来(queue.poll)执行(.run)(可能为空所以要判断下)
- 我们用wakeup(主动唤醒)select阻塞,没有事件的时候select阻塞,但是有事件就唤醒起来运行了
测试: