直接开车......复制代码
直接上代码,ThreadManager类:
public class ThreadManager {
//获取内核数量
private final static int NUMBER_OF_CORES = Runtime.getRuntime().availableProcessors();
private final static ThreadPoolExecutor mDefFixThreadPool;
private final static ThreadPoolExecutor mDefCacheThreadPool;
private final static ExecutorService mDefSingleThreadPool;
static {
mDefFixThreadPool = (ThreadPoolExecutor) Executors.newFixedThreadPool(NUMBER_OF_CORES * 2);
mDefCacheThreadPool = (ThreadPoolExecutor) Executors.newCachedThreadPool();
mDefSingleThreadPool = Executors.newSingleThreadExecutor();
}
public static ThreadPoolExecutor getDefFixThreadPool() {
return mDefFixThreadPool;
}
public static ThreadPoolExecutor getDefCacheThreadPool() {
return mDefCacheThreadPool;
}
public static ExecutorService getDefSingleThreadPool() {
return mDefSingleThreadPool;
}
}复制代码
就这么简单实现,总比每次都new Thread()好,节省系统资源。
简单使用如下:
public class ThreadTest {
private static int count;
public static void main(String[] args) throws java.lang.Exception {
//CacheThreadPool简单使用
for (int i = 0; i < 20; i++) {
ThreadManager.getDefCacheThreadPool().execute(new Runnable() {
@Override
public void run() {
//do work
count++;
System.out.println(count);
System.out.println("ActiveCount:"+ThreadManager.getDefCacheThreadPool().getActiveCount());
}
});
}
//
//FixThreadPool简单使用
//for (int i = 0; i < 10; i++) {
// ThreadManager.getDefFixThreadPool().execute(new Runnable() {
// @Override
// public void run() {
// //do work
// count++;
// System.out.println(count);
// System.out.println("ActiveCount:"+ThreadManager.getDefFixThreadPool().getActiveCount());
// }
// });
//}
//SingleThreadPool简单使用
// for (int i = 0; i < 10; i++) {
// ThreadManager.getDefSingleThreadPool().execute(new Runnable() {
// @Override
// public void run() {
// //do work
// count++;
// System.out.println(count);
// }
// });
//}
}
}复制代码