您的位置:首页 > 编程语言 > Java开发

JAVA ThreadPool & ThreadFactory

2014-09-22 11:00 274 查看
package threadPool;

import java.util.concurrent.ThreadFactory;
import java.util.concurrent.atomic.AtomicInteger;

/**
* @ClassName: BasicThreadFactory
* @Description: TODO
* @author Zhou Shengshuai
* @date 2014年9月22日 上午10:09:30
*
*/
public class BasicThreadFactory implements ThreadFactory {
private final ThreadGroup threadGroup;
private final AtomicInteger threadNumber = new AtomicInteger(1);
private final String threadNamePrefix;

/**
* 构造函数
*
* @param threadPoolName
* 线程池名称
*/
public BasicThreadFactory(String threadPoolName) {
SecurityManager securityManager = System.getSecurityManager();

threadGroup = (securityManager != null) ? securityManager.getThreadGroup() : Thread.currentThread().getThreadGroup();

threadNamePrefix = threadPoolName + "-thread-";
}

/**
* 创建线程
*/
@Override
public Thread newThread(Runnable runnable) {
Thread thread = new Thread(threadGroup, runnable, threadNamePrefix + threadNumber.getAndIncrement(), 0);

if (thread.isDaemon()) {
thread.setDaemon(false);
}

if (thread.getPriority() != Thread.MAX_PRIORITY) {
thread.setPriority(Thread.MAX_PRIORITY);
}

return thread;
}
}

package threadPool;

/**
* @ClassName: BasicThreadTask
* @Description: TODO
* @author Zhou Shengshuai
* @date 2014年9月22日 上午10:12:02
*
*/
public class BasicThreadTask implements Runnable {

@Override
public void run() {
System.out.println(Thread.currentThread().getName());
}

}

package threadPool;

import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;

/**
* @ClassName: MainThreadTask
* @Description: TODO
* @author Zhou Shengshuai
* @date 2014年9月22日 上午10:14:34
*
*/
public class MainThreadTask {
private ThreadPoolExecutor threadPoolExecutor = null;

public void initial() {
threadPoolExecutor = (ThreadPoolExecutor) Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors(), new BasicThreadFactory("BasicThreadFactory"));
}

public void execute() {
for (int index = 0; index < 10; index++) {
threadPoolExecutor.execute(new BasicThreadTask());
}
}

public void destroy() {
threadPoolExecutor.shutdown();
}

/**
* @Title: main
* @Description: TODO
* @param args
* @throws
*/
public static void main(String[] args) {
MainThreadTask mainThreadTask = new MainThreadTask();

mainThreadTask.initial();
mainThreadTask.execute();
mainThreadTask.destroy();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐