第4章NioEventLoop三个问题解答是否正确
来源:4-1 NioEventLoop概述

鋒Nic
2018-06-14
问:默认情况下,Netty服务端起多少线程?何时启动? 答:默认2*cpu即Runtime.getRuntime().availableProcessors()*2]线程,调用execute()方法判断当前是否在本线程,如果是在本线程说明线程已经启动,如果是在外部线程调用execute()方法,首先调用startThread()方法判断当前线程是否启动,未启动就启动此线程
问:Netty是如何解决JDK空轮询Bug? 答:判断阻塞select操作是否阻塞timeoutMillis时间,未阻塞timeoutMillis时间表示可能触发JDK空轮询;判断触发JDK空轮询的次数是否超过阈值(默认512),超过阈值调用rebuildSelector()方法重建Selector把之前的Selector上面所有的Key重新移到新的Selector避免JDK空轮询的Bug
问:Netty如何保证异步串行无锁化? 答:外部线程调用EventLoop或者Channel方法通过inEventLoop()方法判断得出是外部线程,所有操作封装成Task丢到普通任务队列MpscQueue,异步执行普通任务队列MpscQueue待执行任务
写回答
1回答
-
哈哈,理解很到位呀!赞
10
相似问题