AnThreadGroupFactoryworkinmutiThread

字號(hào):

package thread;
    import java.util.concurrent.ThreadFactory;
    /**
    * Thread Factory with Thread Group, which can work in multi thread env,
    * can create thread by daemon flag, and named each thread in creating.
    *
    */
    class ThreadGroupFactory implements ThreadFactory{
    //attributes
    private ThreadGroup _threadGroup;
    private String _namePrefix;
    private boolean _createDaemonFlag;
    private int _numThreads;
    private final Object _synLock = new Object();
    //assign the thread group
    public ThreadGroupFactory(ThreadGroup threadGroup, String namePrefix) {
    _threadGroup=threadGroup;
    _namePrefix = namePrefix;
    _numThreads=0;
    }
    //use parent thread group
    public ThreadGroupFactory(String namePrefix) {
    this(Thread.currentThread().getThreadGroup(), namePrefix);
    }
    //assign the daemon flag
    public void createDaemonThreads(boolean createDaemonFlag){
    synchronized(_synLock){
    _createDaemonFlag=createDaemonFlag;
    }
    }
    @Override
    public Thread newThread(Runnable r) {
    String threadName;
    boolean daemonFlag;、
    synchronized(_synLock){
    threadName = _namePrefix + ++_numThreads;
    daemonFlag = _createDaemonFlag;
    }
    Thread thread = new Thread(_threadGroup, r, threadName);
    thread.setDaemon(daemonFlag);
    return thread;
    }
    }