java中创建线程池的方式一般有两种: 通过Executors工厂方法创建 通过new ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue ...
分类:
编程语言 时间:
2019-10-11 18:48:36
阅读次数:
272
虽然有6中线程池,但除了ForkJoinPool是实现了ExecutorService 其它的都是对ThreadPoolExecutor的调用。 1.FixedThreadPool 最普通的线程池,可以指定线程数大小。创建是线程是普通线程 2. SingleThreadPool 线程数为1的线程池, ...
分类:
编程语言 时间:
2019-10-04 13:04:50
阅读次数:
84
线程池 ThreadPoolExecutor类 参考:https://www.cnblogs.com/dolphin0520/p/3932921.html 构造方法: ThreadPoolExecutor (int?corePoolSize, int?maximumPoolSize, long?ke ...
分类:
编程语言 时间:
2019-09-29 22:01:39
阅读次数:
106
ProcessPoolExecutor线程池 1、为什么需要线程池呢,如果创建了20个线程,而同时只允许3个线程在运行,但是20个线程都需要创建和销毁,线程的创建是需要消耗系统资源的,所以线程池的思想就是:每个线程各分配一个任务,剩下的任务皮队等待,当某个线程完成了任务的时候,排队任务就可以安排给这 ...
分类:
编程语言 时间:
2019-09-28 09:13:46
阅读次数:
73
ThreadPoolExecutor的几个重要属性 BlockingQueue workQueue 阻塞队列。存放将要执行的任务 HashSet workers 当前线程池的线程集合。下文会重点介绍Worker这个内部类 corePoolSize 核心线程数 maximumPoolSize 最大线程 ...
分类:
编程语言 时间:
2019-09-20 18:35:56
阅读次数:
100
出处:https://blog.csdn.net/kity9420/article/details/80740466 前言 经常会遇到一些性能问题,比如调用某个接口,可能要循环调用100次,并且需要拿到每一次调用的返回结果,通常我们都是放在for循环中一次次的串行调用,这种方式可想而知道有多慢,那怎 ...
分类:
编程语言 时间:
2019-09-12 23:33:58
阅读次数:
161
new Thread 弊端: 1、每次new Thread 新建对象,性能差 2、线程缺乏统一管理,可能无限制的新建线程,相互竞争,可能占用过多的系统资源导致死机或者OOM 3、缺少更多的功能,如更多执行、线程中断等 线程池--ThreadPoolExecutor corePoolSize: 核心线 ...
分类:
编程语言 时间:
2019-09-12 09:15:56
阅读次数:
92
1.变量 ThreadPoolExecutor先定义了这几个常量,初看时一脸懵逼,其实它就是用int的二进制高三位来表示线程池的状态, 先回顾一下位运算: ...
分类:
编程语言 时间:
2019-09-05 01:01:54
阅读次数:
72
`java.util.concurrent` ThreadPoolExecutor实现类 执行过程 1. 如果线程数量未达到corePoolSize,则新建一个线程(核心线程)执行任务 2. 如果线程数量达到了corePools,则将任务移入队列等待 3. 如果队列已满,新建线程(非核心线程)执行任 ...
分类:
编程语言 时间:
2019-08-26 20:55:05
阅读次数:
73
这篇文章对ThreadPoolExecutor创建的线程池如何操作线程的生命周期通过源码的方式进行详细解析。通过对execute方法、addWorker方法、Worker类、runWorker方法、getTask方法、processWorkerExit从源码角度详细阐述,文末有彩蛋。 exexcte ...
分类:
编程语言 时间:
2019-08-21 09:59:26
阅读次数:
82