package com.taobao.yugong.common.utils.thread; import java.lang.Thread.UncaughtExceptionHandler; import java.util.concurrent.ThreadFactory; import java.util.concurrent.atomic.AtomicInteger; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class NamedThreadFactory implements ThreadFactory { private static final Logger logger = LoggerFactory.getLogger(NamedThreadFactory.class); private final static UncaughtExceptionHandler uncaughtExceptionHandler = new YuGongUncaughtExceptionHandler(logger); private final static String DEFAULT_NAME = "yugong"; private String threadName; private AtomicInteger threadNumber = new AtomicInteger(0); private boolean daemon = true; public NamedThreadFactory(){ this(DEFAULT_NAME, true); } public NamedThreadFactory(String name){ this(name, true); } public NamedThreadFactory(String name, boolean daemon){ this.threadName = name; this.daemon = daemon; } public Thread newThread(Runnable r) { Thread t = new Thread(r, threadName + "-" + threadNumber.getAndIncrement()); t.setDaemon(daemon); t.setUncaughtExceptionHandler(uncaughtExceptionHandler); return t; } }