Skip to content

Instantly share code, notes, and snippets.

@yangl
Created November 30, 2013 07:33
Show Gist options
  • Save yangl/7716377 to your computer and use it in GitHub Desktop.
Save yangl/7716377 to your computer and use it in GitHub Desktop.
带前缀命名的线程工厂,来自dubbo。
package com.alibaba.rocketmq.common;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.atomic.AtomicInteger;
/**
* 带前缀命名的线程工厂
*
* @author YAGNLiiN<yanglinf@gmail.com>
* @since 2013-05-23
*/
public class NamedThreadFactory implements ThreadFactory {
private static final AtomicInteger POOL_SEQ = new AtomicInteger(1);
private final AtomicInteger mThreadNum = new AtomicInteger(1);
private final String mPrefix;
private final boolean mDaemo;
private final ThreadGroup mGroup;
public NamedThreadFactory() {
this("pool-" + POOL_SEQ.getAndIncrement());
}
public NamedThreadFactory(String prefix) {
this(prefix, false);
}
public NamedThreadFactory(String prefix, boolean daemo) {
mPrefix = prefix + "-thread-";
mDaemo = daemo;
SecurityManager s = System.getSecurityManager();
mGroup = (s == null) ? Thread.currentThread().getThreadGroup()
: s.getThreadGroup();
}
@Override
public Thread newThread(Runnable runnable) {
String name = mPrefix + mThreadNum.getAndIncrement();
Thread ret = new Thread(mGroup, runnable, name, 0);
ret.setDaemon(mDaemo);
return ret;
}
public ThreadGroup getThreadGroup() {
return mGroup;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment