Executors和ThreadPoolExecutor学习整理

任务的执行与线程池(上) https://mp.weixin.qq.com/s/p3JZERyZXnF8jR_3KKIGJA 任务的执行与线程池(下) https://mp.weixin.qq.com/s/iUAaVXIB8rCzP_GeDhIlqAjava并发编程–Executor 框架 https://www.cnblogs.com/MOBIN/p/5436482.html线程…

大家好,又见面了,我是全栈君。

任务的执行与线程池(上)
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!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/121077.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • OPKG命令执行过程分析

    OPKG命令执行过程分析一、简介Opkg是一个基于ipkg的轻量级的软件包管理系统,主要用于嵌入式系统,目前应用opkg的有OpenWRT和OpenEmbedded。1Opkg的详细使用方法可以参考OpenWRT的WIKI页面2,不再赘述,本文将重点解释opkg的工作原理。Opkg的源代码可以在GoogleCode3或YoctoProject4上找到。Opkg的版本目前到了0.3.05,我使用的

    2022年6月6日
    36
  • 解决:navicat for mysql连接失败[通俗易懂]

    解决:navicat for mysql连接失败[通俗易懂]1、问题描述:在navicatformysql连接mysql8.0.23时,出现如下错误。2、原因:通过百度翻译,发现是由于navicat版本的问题,出现连接失败的原因。这也就是说需要升级navicat版本。通过搜索,发现navicat是收费的,升级将会面临其他不可控的问题。于是需要寻找其他方法。通过查阅资料以及他人的经历分享。我得知了:mysql8之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password

    2022年10月14日
    0
  • SSM框架——Spring+SpringMVC+Mybatis的搭建教程

    一个简单的SSM框架的搭建过程,简单易学!SSM框架在项目开发中经常使用到,相比于SSH框架,它在仅几年的开发中运用的更加广泛。

    2022年2月25日
    38
  • SEO优化怎么做_个人做SEO在哪里可以找到

    SEO优化怎么做_个人做SEO在哪里可以找到很多新人刚接触SEO,不知道从哪里开始着手优化,现在就给大家讲讲SEO优化到底要怎么做。按照下面的步骤来,就基本完成一个网站优化的思路。如果你想了解关于SEO的最新的优化操作,以及这方面的系统化的知识和思维的话,你可以来这个群:开头是四三七三,中间是四零,结尾是二二六。在这里你可以每天都能学习到关于SEO优化的知识,会有专门的人讲解,你只需要付出你的时间和用心的听就行!    SE

    2022年9月2日
    2
  • pt100测温电路图(ad590典型的测温电路)

    PT100精密测温电路一、需求分析根据题目要求为:测温范围为0-100℃、测温精度要求为±1℃。由于铂电阻具有精度高、性能可靠、稳定性好的特点,且铂电阻的电阻相对变化率与温度的关系曲线线性度最好,故选择铂电阻作为敏感元件。而在国标中,铂电阻有几种不同的标准,如PT100、PT1000。分别对应着0摄氏度下铂电阻的阻值为100R和1000R,由于需要考虑铂电阻的自发热问题,所以尽量选择阻值小的铂电阻,故选择PT100为最终型号。二、电路设计2.1热电阻接法热电阻测温电路有多种接法,其中三线制会导致

    2022年4月9日
    75
  • C++stl库_c++库

    C++stl库_c++库熟练使用STL标准库是每个C++程序员的必备技能。C++标准程序库发展至今,几乎所有内容都被设计为了模板的形式,STL已经成为C++程序库的重要组成部分。可以这么说,如果C++不支持STL标准模板库,就无法使用程序库。在大多数人看来,计算机既神秘有能干,但在程序员的眼中,计算机又蠢又笨,唯一的优点就是运算速度比人快,不给指令什么都干不了,就是给指令,计算机也不能灵活运用。比如说,在C++中,同样一个加法,不同的数据类型,要给出不同的运行代码:#include<iostrea

    2022年10月9日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号