Netty Boss线程是为什么都是写1

Netty的Boss线程池通常设置为1个线程,这是因为Boss线程主要负责接收连接请求,并分配给Worker线程处理。多个线程可能导致竞争,而Boss线程仅做接收,不会进行实际读写操作。从源码分析,一个线程持有Selector,由于Selector的阻塞特性,多线程并不适合。因此,设置1个线程确保效率和避免不必要的资源消耗。
摘要由CSDN通过智能技术生成

Netty Boss线程是为什么都是写1

先来看看常见的中间件、框架的使用方式。

中间件使用

Dubbo中的使用方法:NettyServer#doOpen

bossGroup = new NioEventLoopGroup(1, new DefaultThreadFactory("NettyServerBoss", true));

RxServer 的使用方法

serverBootstrap.group(RxNetty.getRxEventLoopProvider().globalServerParentEventLoop(true),
                              RxNetty.getRxEventLoopProvider().globalServerEventLoop(true));

public static RxEventLoopProvider getRxEventLoopProvider() {
   
        return rxEventLoopProvider;
}
 

private static volatile RxEventLoopProvider rxEventLoopProvider =
            new SingleNioLoopProvider(1, Runtime.getRuntime().availableProcessors());

看一下对应的实现 SingleNioLoopProvider

    public SingleNioLoopProvider() {
   
        this(Runtime.getRuntime().availableProcessors());
    }
   
    public SingleNioLoopProvider(int threadCount) {
   
        eventLoop = new SharedNioEventLoopGroup(threadCount);
        parentEventLoop = eventLoop;
        parentEventLoopCount = childEventLoopCount = threadCount;
        nativeEventLoop = new AtomicReference<EpollEventLoopGroup>();
        nativeParentEventLoop = nativeEventLoop;
    }

    public SingleNioLoopProvider(int parentEventLoopCount, int childEventLoopCount) {
   
        this.
  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值