ThreadPoolExecutor创建四种常用线程池
package com.xiaobu.util;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.concurrent.BasicThreadFactory;
import java.util.concurrent.*;
@Slf4j
public class ParallelUtils {
private static final ThreadFactory THREAD_FACTORY = new ThreadFactoryBuilder().setNameFormat("thread-pool-%s").build();
public static ThreadPoolExecutor newFixedThreadPool(final int threadNum) {
return new ThreadPoolExecutor(threadNum, threadNum, 60, TimeUnit.SECONDS, new LinkedBlockingQueue<>(50), THREAD_FACTORY);
}
public static ThreadPoolExecutor newSingleThreadExecutor(final int threadNum) {
return new ThreadPoolExecutor(1, 1, 60, TimeUnit.SECONDS, new LinkedBlockingQueue<>(50), THREAD_FACTORY);
}
public static ThreadPoolExecutor newCachedThreadPool() {
return new ThreadPoolExecutor(0, 50, 60, TimeUnit.SECONDS, new SynchronousQueue<>(), THREAD_FACTORY);
}
public static ScheduledThreadPoolExecutor newScheduledThreadPool(final int threadNum) {
ScheduledThreadPoolExecutor scheduledThreadPoolExecutor = new ScheduledThreadPoolExecutor(threadNum, THREAD_FACTORY);
scheduledThreadPoolExecutor.setMaximumPoolSize(threadNum);
return scheduledThreadPoolExecutor;
}
public static void main(String[] args) {
Executors.newCachedThreadPool();
Executors.newFixedThreadPool(10);
Executors.newSingleThreadExecutor();
Executors.newScheduledThreadPool(10);
ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(1,
new BasicThreadFactory.Builder().namingPattern("example-schedule-pool-%d").daemon(true).build());
}
}