您的位置:首页 > 其它

线程池

2016-01-08 14:17 295 查看
简单的调用:

public class a {
public void A() {
// 创建一个线程池
ExecutorService executorService = Executors.newFixedThreadPool(10);
executorService.execute(new MyRunnable());
}

class MyRunnable implements Runnable {
@Override
public void run() {
// TODO Auto-generated method stub
}
}
}


自定义线程池:

public class ThreadManager {

private static ThreadProxyPool threadProxyPool;
private static Object object = new Object();

public static ThreadProxyPool getThreadProxyPool() {
synchronized (object) {
if (threadProxyPool == null) {
threadProxyPool = new ThreadProxyPool(10, 10, 5L);
}
return threadProxyPool;
}
}

public static class ThreadProxyPool {
private ThreadPoolExecutor threadPoolExecutor;
private int corePoolSize;
private int maximumPoolSize;
private long keepAliveTime;

public ThreadProxyPool(int corePoolSize, int maximumPoolSize, long keepAliveTime) {
this.corePoolSize = corePoolSize;
this.maximumPoolSize = maximumPoolSize;
this.keepAliveTime = keepAliveTime;
}

public void execute(Runnable runnable) {
if (runnable == null) {
return;
}
if (threadPoolExecutor == null || threadPoolExecutor.isShutdown()) {
threadPoolExecutor = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime,
TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(), Executors.defaultThreadFactory(),
new AbortPolicy());
}

threadPoolExecutor.execute(runnable);
}

public void cancel(Runnable runnable) {
if (runnable != null && !threadPoolExecutor.isShutdown()) {
threadPoolExecutor.getQueue().remove(runnable);
}
}
}

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