初探线程池
标签:import ring 方式 static 任务 blocking 了解 read led
了解了一下线程池,先记录一下,之后还会更新
1 import java.util.concurrent.ExecutorService;
2 import java.util.concurrent.Executors;
3
4 /**
5 * 以下是Java提供的创建线程池的四种常见方式,如果有特殊需求可使用ThreadPoolExecutor创建
6 *
7 */
8 public class MyThreadPoolDemo {
9 public static void main(String[] args) {
10 /**
11 * 第一种方式
12 * 线程数目无限制
13 * 有空闲线程则复用,否则新建线程
14 * 优点:减少线程的创建和销毁,减少系统开销(源码指出,核心线程数目为0,非核心线程闲置60秒销毁),源码:
15 * public static ExecutorService newCachedThreadPool() {
16 * return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
17 * 60L, TimeUnit.SECONDS,
18 * new SynchronousQueue());
19 * }
20 */
21 ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
22
23
24
25 /**
26 * 第二种方式
27 *nThreds:线程最大并发数
28 * 非核心线程闲置时间为0,
29 * 超过了最大并发线程数时会将新的线程放入LinkedBlockingQueue队列等待。源码:
30 * public static ExecutorService newFixedThreadPool(int nThreads) {
31 * return new ThreadPoolExecutor(nThreads, nThreads,
32 * 0L, TimeUnit.MILLISECONDS,
33 * new LinkedBlockingQueue());
34 * }
35 */
36 ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3);
37
38
39
40
41 /**
42 * 第三种方式
43 * 任务队列是DelayedWorkQueue,支持定时和周期性执行任务,以下是源码
44 *public ScheduledThreadPoolExecutor(int corePoolSize) {
45 * super(corePoolSize, Integer.MAX_VALUE, 0, NANOSECONDS,
46 * new DelayedWorkQueue());
47 * }
48 *
49 */
50 ExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(3);
51
52
53
54 /**
55 * 第四种方式
56 * 源码中第一个参数是核心线程的最大数量,第二个参数是总线程的最大数量
57 * 第三个是非核心线程闲置时间(时间一到就被销毁),第四个参数是第三个参数的单位
58 * 第五个参数是线程的任务队列,当线程数大于时,线程入队等待,该队列没有最大线程数限制,源码:
59 * public static ExecutorService newSingleThreadExecutor() {
60 * return new FinalizableDelegatedExecutorService
61 * (new ThreadPoolExecutor(1, 1,
62 * 0L, TimeUnit.MILLISECONDS,
63 * new LinkedBlockingQueue()));
64 * }
65 * public static ExecutorService newSingleThreadExecutor() {
66 * return new FinalizableDelegatedExecutorService
67 * (new ThreadPoolExecutor(1, 1,
68 * 0L, TimeUnit.MILLISECONDS,
69 * new LinkedBlockingQueue()));
70 * }
71 */
72 ExecutorService singleThreadPool = Executors.newSingleThreadExecutor();
73 //
74
75 }
76 }
1
初探线程池
标签:import ring 方式 static 任务 blocking 了解 read led
原文地址:https://www.cnblogs.com/yu-xia-zheng-ye/p/13681319.html
文章来自:
搜素材网的
编程语言模块,转载请注明文章出处。
文章标题:
初探线程池
文章链接:http://soscw.com/index.php/essay/68284.html
评论