十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

线程池命名

线程池命名 初始化线程池的时候需要显示命名设置线程池名称前缀有利于定位问题。默认情况下创建的线程名字类似pool-1-thread-n这样的没有业务含义不利于我们定位问题。给线程池里的线程命名通常有下面两种方式1、利用 guava 的ThreadFactoryBuilderThreadFactory threadFactory new ThreadFactoryBuilder() .setNameFormat(threadNamePrefix -%d) .setDaemon(true).build(); ExecutorService threadPool new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, TimeUnit.MINUTES, workQueue, threadFactory);2、自己实现ThreadFactory。import java.util.concurrent.ThreadFactory; import java.util.concurrent.atomic.AtomicInteger; /** * 线程工厂它设置线程名称有利于我们定位问题。 */ public final class NamingThreadFactory implements ThreadFactory { private final AtomicInteger threadNum new AtomicInteger(); private final String name; /** * 创建一个带名字的线程池生产工厂 */ public NamingThreadFactory(String name) { this.name name; } Override public Thread newThread(Runnable r) { Thread t new Thread(r); t.setName(name [# threadNum.incrementAndGet() ]); return t; } }
返回列表