java创建线程池参数_java创建线程的四种方式

java创建线程池参数_java创建线程的四种方式java如何创建线程池

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

一、工作中使用线程池的好处:
1.降低资源消耗,线程的创建和消耗是非常消耗资源的,使用线程池可以避免线程的频繁创建和消耗,从而降低资源消耗。
2.提高响应速度,当请求到达时,线程池可以为请求直接分配一个线程,因此就不用等待线程创建就可以立即执行。
3.线程池可以很好的管理线程。

二、java中有哪些常用的线程池(java.util.concurrent.Executors):
1.CachedThreadPool:可缓存线程池,它是一个可以无限扩大的线程池。
创建方法为:Executors.newCachThreadPool();
2.FixedThreadPool:固定线程池,即线程池中线程个数是固定的。
创建方法为:Executors.newFixedThreadPool(3);
3.SingleThreadExecutor:单线程线程池,即只创建一个工作线程来执行任务,单线程线程池最大的特点就是可以保证顺序执行各个任务。
创建方法为:Executors.newSingleThreadExecutcor();
4.ScheduleThreadPool:定长线程池,且支持定时及周期性任务。
创建方法为:Executors.newScheduleThreadPool(5);

三、这样创建线程池有什么问题:
上述线程池的创建方式,可能会导致OOM,例如:FixedThreadPool和SingelThreadPool允许的请求队列长度为:Integer.MAX_VALUE,这样可能堆积大量请求,导致OOM;而CachedThreadPool允许创建的线程数量为Integer.MAX_VALUE,这样可能创建大量的线程,导致OOM.。
所以建议通过ThreadPoolExecutor来创建线程池,方式如下:
new ThreadPoolExecutor(10,//核心线程数
20,//最大线程数
1L,//空闲线程存活时间
TimeUnit.MILLISECONDS,//空闲线程存活时间单位
new LinkedBlockingQueue(1024),//阻塞队列
new ThreadFactoryBuilder().setNameFormat(“demo-pool-%d”).build(),//线程工厂
new ThreadPoolExecutor.AbortPolicy());//拒绝策略

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

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

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


相关推荐

  • S3C2440C语言点灯[通俗易懂]

    S3C2440C语言点灯[通俗易懂]第一代程序员使用机器码第二代程序员使用汇编第三代程序员使用C语言C语言相较于汇编和机器码是一个更高级的语言,我们使用的技术也应该与时俱进之前控制寄存器是配置GPFCON和GPFDAT寄存器,通过地址访问,所以可以用C语言来进行对地址的访问。GPFCON——0x5600,0050GPFDAT——0x5600,0054目录S3C2440芯片手册导读用指针表示S3C2440芯片手册导读对于GPFCON,只用到了16位对于GPFDAT,只用到了8位我们仍然可以以32位,就是4字节的

    2022年6月13日
    21
  • Oracle 动态SQL「建议收藏」

    Oracle 动态SQL「建议收藏」Oracle动态SQL一、动态SQL的简介1、定义静态SQL是指直接嵌入到PL/SQL块中的SQL语句。动态SQL是指运行PL/SQL块是动态输入的SQL语句。2、适用范围如果在PL/SQL块中需要执行DDL语句(create,alter,drop等)、DCL语句(grant,revoke等)或更加灵活的SQL语句,需要用到动态SQL。

    2022年6月23日
    26
  • 《算法导论》 — Chapter 7 高速排序[通俗易懂]

    《算法导论》 — Chapter 7 高速排序

    2022年1月21日
    42
  • 键盘过滤驱动程序[通俗易懂]

    键盘过滤驱动程序[通俗易懂]在我,因为现在是半个月后的时间与驱动器接触,我深深体会到开头难,和学习毅力的重要性。同时推动新。当看着帆驱动的开始《Windows驱动开发技术具体解释》讲的挺细。对新手来说是个不错的学习资料,可是更重

    2022年7月4日
    24
  • memset库函数「建议收藏」

    memset库函数「建议收藏」头文件:#include定义函数:void*memset(void*s,intc,size_tn);函数说明:memset()会将参数s所指的内存区域前n个字节以参数c填入,然后

    2022年8月5日
    7
  • verilog_移位寄存器_仿真(程序逐句解释)

    verilog_移位寄存器_仿真(程序逐句解释)前言  之前老是想着学的快点,就直接编译了程序就下载在开发板上跑,后来发现这样不行,因为如果程序有问题,验证和纠错的时间成本太高了(毕竟vivado跑一次花的时间很长),反过来学习仿真,下面是一点心得和体会。开发环境编译软件及版本:vivado2019.2编译语言:verilog  网上随便找了一个简单程序和仿真,先实现复现,再谈其他。下面我将先给出代码和仿真截图,再说具体的东西。移位寄存器程序代码:`timescale1ns/1ps/////////////////////////

    2022年7月16日
    8

发表回复

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

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