public static void main(String[] args) {
//
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
//Common Thread Pool 公用线程池 corePoolSize核心线程数,maximumPoolSize最大线程数
ExecutorService pool = new ThreadPoolExecutor(5, 200,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
pool.execute(()-> {
for (int i = 0; i < 10; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
System.out.println(Thread.currentThread().getName());
}
});
pool.execute(()-> System.out.println(Thread.currentThread().getName()));
pool.execute(()-> System.out.println(Thread.currentThread().getName()));
pool.execute(()-> System.out.println(Thread.currentThread().getName()));
pool.execute(()-> System.out.println(Thread.currentThread().getName()));
//gracefully shutdown 正常关闭 有序关闭,不会执行新任务,但会把所以任务执行完毕
pool.shutdown();
//立即关闭
//pool.shutdownNow();
System.out.println("gracefully shutdown 正常关闭");
}
输出:
demo-pool-1
demo-pool-2
demo-pool-3
gracefully shutdown 正常关闭
demo-pool-4
demo-pool-0
demo-pool-0
demo-pool-0
demo-pool-0
demo-pool-0
demo-pool-0
demo-pool-0
demo-pool-0
demo-pool-0
demo-pool-0
Process finished with exit code 0