netty NioEventLoopGroup 线程名称设置

来源:互联网 发布:淘宝免费流量来源 编辑:程序博客网 时间:2024/05/16 14:22

在初始化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

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


0 0
原创粉丝点击