/** * Dianping.com Inc. * Copyright (c) 2003-2013 All Rights Reserved. */ package com.dianping.pigeon.threadpool; import java.util.concurrent.ThreadFactory; import java.util.concurrent.atomic.AtomicInteger; /** * * * @author jianhuihuang * @version $Id: DefaultThreadFactory.java, v 0.1 2013-6-29 下午6:06:42 * jianhuihuang Exp $ */ public class DefaultThreadFactory implements ThreadFactory { static final AtomicInteger poolNumber = new AtomicInteger(1); final AtomicInteger threadNumber; final ThreadGroup group; final String namePrefix; boolean isDaemon = true; public DefaultThreadFactory() { this("Default-Pool"); } public DefaultThreadFactory(String name) { this(name, true); } public DefaultThreadFactory(String preffix, boolean daemon) { this.threadNumber = new AtomicInteger(1); this.group = new ThreadGroup(preffix + "-" + poolNumber.getAndIncrement() + "-threadGroup"); this.namePrefix = preffix + "-" + poolNumber.getAndIncrement() + "-thread-"; this.isDaemon = daemon; } /** * TODO, 是否可以设置为daemon? * * @see java.util.concurrent.ThreadFactory#newThread(java.lang.Runnable) */ public Thread newThread(Runnable r) { Thread t = new Thread(this.group, r, this.namePrefix + this.threadNumber.getAndIncrement(), -3715992351445876736L); t.setDaemon(this.isDaemon); if (t.getPriority() != 5) { t.setPriority(5); } return t; } /** * @return the group */ public ThreadGroup getGroup() { return group; } }