netty NioEventLoopGroup 线程名称设置
2017-01-11 16:41
2261 查看
在初始化workergroup的时候
如果不指定ThreadFactory,那么将使用netty默认的ThreadFactory DefaultThreadFactory
比如在日志输出的可以看出线程名称是
2017 一月 11 16:34:40.420 [nioEventLoopGroup-3-1] INFO c.z.e.netty.handler.DownloadHandler - nioEventLoopGroup-3-1
nioEventLoopGroup-3-1
prefix = poolName + '-' + poolId.incrementAndGet() + '-';
Thread t = newThread(new DefaultRunnableDecorator(r), prefix + nextId.incrementAndGet());
由3部分组成
poolname 例如 nioEventLoopGroup
然后-poolid
然后是-线程id
可以自定义自己的ThreadFactory
另外java 使用executors.newXXX 方法创建的线程池 也会使用java默认的线程工厂 比如pool-2-thread-1
spring框架也会使用executors.newXXX创建线程池,所以上面是2
如果不指定ThreadFactory,那么将使用netty默认的ThreadFactory DefaultThreadFactory
比如在日志输出的可以看出线程名称是
2017 一月 11 16:34:40.420 [nioEventLoopGroup-3-1] INFO c.z.e.netty.handler.DownloadHandler - nioEventLoopGroup-3-1
nioEventLoopGroup-3-1
prefix = poolName + '-' + poolId.incrementAndGet() + '-';
Thread t = newThread(new DefaultRunnableDecorator(r), prefix + nextId.incrementAndGet());
由3部分组成
poolname 例如 nioEventLoopGroup
然后-poolid
然后是-线程id
可以自定义自己的ThreadFactory
package com.zheyue.encrypt.concurrency; import org.apache.commons.lang3.StringUtils; import java.util.concurrent.ThreadFactory; import java.util.concurrent.atomic.AtomicInteger; /** * @author FD * @date 2017/1/11 */ public class NamedThreadFactory implements ThreadFactory { private static final AtomicInteger threadNumber = new AtomicInteger(1); private final AtomicInteger mThreadNum = new AtomicInteger(1); private final String prefix; private final boolean daemonThread; private final ThreadGroup threadGroup; public NamedThreadFactory() { this("fileServer-threadPool-" + threadNumber.getAndIncrement(), false); } public NamedThreadFactory(String prefix) { this(prefix, false); } public NamedThreadFactory(String prefix, boolean daemon) { this.prefix = StringUtils.isNotEmpty(prefix) ? prefix + "-thread-" : ""; daemonThread = daemon; SecurityManager s = System.getSecurityManager(); threadGroup = (s == null) ? Thread.currentThread().getThreadGroup() : s.getThreadGroup(); } public Thread newThread(Runnable runnable) { String name = prefix + mThreadNum.getAndIncrement(); // Thread ret = new Thread(threadGroup, runnable, name, 0); Thread ret = new Thread(threadGroup, runnable, name); ret.setDaemon(daemonThread); return ret; } public ThreadGroup getThreadGroup() { return threadGroup; } }
另外java 使用executors.newXXX 方法创建的线程池 也会使用java默认的线程工厂 比如pool-2-thread-1
spring框架也会使用executors.newXXX创建线程池,所以上面是2
相关文章推荐
- Netty线程模型源码分析之NioEventLoopGroup的初始化
- Netty学习之旅------再谈线程模型之源码分析NioEventLoopGroup、SingleThreadEventExecutor
- Netty源码学习(二)NioEventLoopGroup
- 【Netty4.X】Netty源码分析之NioEventLoopGroup(五)
- Netty中NioEventLoopGroup
- Netty源码分析:NioEventLoopGroup
- Netty4(一)NioEventLoopGroup
- android netty5.0 编译时 java.lang.NoClassDefFoundError: io.netty.channel.nio.NioEventLoopGroup
- netty 启动分析 NioEventLoopGroup
- Netty 权威指南笔记(八):EventLoopGroup 和线程模型
- Netty源码学习——EventLoopGroup原理:NioEventLoopGroup分析
- Netty4-- NioEventLoopGroup继承层次结构
- netty5笔记-线程模型2-EventLoopGroup
- 【Netty源码解析】NioEventLoop
- Netty源代码学习——EventLoopGroup原理:NioEventLoopGroup分析
- netty5.0之Server端NioEventLoopGroup的初始化
- Netty4学习笔记-- NioEventLoopGroup NioEventLoop
- netty源码分析(一)EventLoopGroup
- Netty in action—EventLoop和线程模型
- 【Netty源码解析】NioEventLoop