ThreadPool线程池

Posted jtfr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThreadPool线程池相关的知识,希望对你有一定的参考价值。

0.线程池的好处

  复用线程,减少线程创建和销毁的开销。

  对线程的进行管理:定时,并发数的控制。

1.常用的三个线程池

new SingleThreadExecutor 核心线程一个、最大线程一个、创建后不销毁、无限队列

 

 1 /**
 2  * new SingleThreadExecutor 核心线程一个、最大线程一个、创建后不销毁、无限队列
 3  */
 4 private static void singleThreadPool() {
 5     ExecutorService executor = Executors.newSingleThreadExecutor();
 6     for (int i = 0; i < 10; i++) {
 7         executor.execute(new MyRunable(i));
 8     }
 9     // 执行完后销毁线程池
10     executor.shutdown();
11 }

 

技术分享图片

 

new FixedThreadPool核心线程和最大线程一样,创建后不销毁、无限队列

 1 /**
 2  * new FixedThreadPool        核心线程和最大线程一样,创建后不销毁、无限队列
 3  */
 4 private static void fixedThreadPool() {
 5     int threadSize = 5;
 6     ExecutorService executor = Executors.newFixedThreadPool(threadSize);
 7     for (int i = 0; i < 15; i++) {
 8         executor.execute(new MyRunable(i));
 9     }
10     // 执行完后销毁线程池
11     executor.shutdown();
12 }

技术分享图片

new CachedThreadPool核心线程零个、最大线程无限、创建后60s无复用销毁、同步队列

 1 /**
 2  * new CachedThreadPool        核心线程零个、最大线程无限、创建后60s无复用销毁、同步队列
 3  */
 4 private static void cachedThreadPool() {
 5     ExecutorService executor = Executors.newCachedThreadPool();
 6     for (int i = 0; i < 100; i++) {
 7         executor.execute(new MyRunable(i));
 8     }
 9     // 执行完后销毁线程池
10     executor.shutdown();
11 }

技术分享图片

 

以上是关于ThreadPool线程池的主要内容,如果未能解决你的问题,请参考以下文章

多线程之旅(ThreadPool 线程池)

ThreadPool

Java多线程:ThreadPool(中)

ThreadPool类(线程池)

线程池(ThreadPool)

多线程二:线程池(ThreadPool)