Java線程池工具類
- java代碼
package cn.pconline.common.utils;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* @Description 線程池工具類
* @Author jie.zhao
* @Date 2019/8/21 9:26
*/
public class ThreadPoolUtil {
/**
* 核心線程數,會一直存活,即使沒有任務,線程池也會維護線程的最少數量
*/
private static final int SIZE_CORE_POOL = 5;
/**
* 線程池維護線程的最大數量
*/
private static final int SIZE_MAX_POOL = 10;
/**
* 線程池維護線程所允許的空閑時間
*/
private static final long ALIVE_TIME = 2000;
/**
* 線程緩沖隊列
*/
private static BlockingQueue<Runnable> bqueue = new ArrayBlockingQueue<Runnable>(100);
private static ThreadPoolExecutor pool = new ThreadPoolExecutor(SIZE_CORE_POOL, SIZE_MAX_POOL, ALIVE_TIME, TimeUnit.MILLISECONDS, bqueue, new ThreadPoolExecutor.CallerRunsPolicy());
static {
pool.prestartAllCoreThreads();
}
public static ThreadPoolExecutor getPool() {
return pool;
}
}
- 使用
ThreadPoolUtil.getPool().execute(new Runnable() {
@Override
public void run() {
playService.syncData2(event, (Enroll) enroll);
}
});