package thread; import ncurrentThreadFactory; /** * Thread Factory with Thread Group which can work in multi thread env * can create thread by daemon flag and named each thread in creating * * @author daniel zhou * */ 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=; } //use parent thread group public ThreadGroupFactory(String namePrefix) { this(ThreadcurrentThread()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); threadsetDaemon(daemonFlag); return thread; } } 本文出自 专注JEE系列规范下的开源技术 博客请务必保留此出处 |