大家好,又见面了,我是全栈君。
任务的执行与线程池(上)
https://mp.weixin.qq.com/s/p3JZERyZXnF8jR_3KKIGJA
任务的执行与线程池(下)
https://mp.weixin.qq.com/s/iUAaVXIB8rCzP_GeDhIlqA
java并发编程–Executor 框架
https://www.cnblogs.com/MOBIN/p/5436482.html
线程池 ThreadPoolExecutor 、 Executors 参数详解与源代码分析
https://www.cnblogs.com/nullzx/p/5184164.html
线程池实例:使用Executors和ThreadPoolExecutor
http://www.importnew.com/8542.html
线程池的工作原理及使用示例
https://www.cnblogs.com/nullzx/p/5175574.html
public class ScheduledThreadPoolExecutor extends ThreadPoolExecutor implements ScheduledExecutorService {
Executors: 加了s ,相当于Arrays,Collections 等,
ThreadPoolExecutor : 一个 ExecutorService,它使用可能的几个池线程之一执行每个提交的任务,通常使用 Executors 工厂方法配置。
ScheduledExecutorService: 接口,一个 ExecutorService,可安排在给定的延迟后运行或定期执行的命令。
ScheduledThreadPoolExecutor : 实现了 ScheduledExecutorService: , 因为它作为一个使用 corePoolSize 线程和一个无界队列的固定大小的池,所以调整 maximumPoolSize 没有什么效果。
– 阿里:
线程池不允许 Executors 这个去创建,通过这个 ThreadPoolExecutor 去创建,这样的处理方式让使用的同学明确线程池的运行规则,避免资源耗尽!
说明:
Executors中各个方法的弊端:
1)
– newFixedThreadPool 创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程。
– newSingleThreadExecutor 创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程。
问题:主要是堆积的请求处理队列可能会耗费非常大的内存,导致OOM!
2)
– newCachedThreadPool 创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。
– newSingleThreadScheduledExecutor 创建一个单线程执行程序,它可安排在给定延迟后运行命令或者定期地执行。
问题:主要问题是线程数的最大值是 Integer.MAX_VALUE(2^31 – 1) ,可能会创建非常多的线程导致OOM!
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/121077.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...