首页 > 编程语言 >java线程池七大参数(转)

java线程池七大参数(转)

时间:2023-09-03 10:11:12浏览次数:56  
标签:缓存 java 队列 keepAliveTime 池七大 maximumPoolSize 任务 线程

转:https://blog.csdn.net/ye17186/article/details/89467919

从源码来看,线程池构造有七个参数,corePoolSize,maximumPoolSize,keepAliveTime,unit,workQueue,threadFactory,handler

一、corePoolSize

核心线程池大小,线程池会维护一个最小线程数量,即使这些线程空闲,也不会被销毁;

如果有新任务进来,核心线程池已满的话,会先缓存到工作队列workQueue

二、maxmiumPoolSize

线程池最大线程数,如果新任务进来此时队列已满,但线程数未超过maximumPoolSize就会创建一个新线程,但不会无限创建,线程数最多不超过maximumPoolSize

三、keepAliveTime

空闲线程的存活时间,如果一个线程空闲且线程池中线程数超过核心线程池大小corePoolSize,则超过keepAliveTime后,这个线程就会被销毁

四、unit

keepAliveTime的单位

五、workQueue

用与缓存任务的工作队列,jdk提供了四种工作队列

5.1.ArrayBlockingQueue

基于数组的有界队列,可以有效防止线程资源耗尽的问题

5.2.LinkedBlockingQueue

基于链表的无界队列,使用此无界队列,会导致参数maxPoolSize不起作用

5.3.SynchronousQuene

不缓存任务的队列,生产者放入任务必须等到消费者取出任务,不会缓存,直接执行,没有可用线程,直接创建新线程,如果达到maximumPoolSize,执行拒绝策略

5.4.PriorityBlockingQueue

具有优先级的无界阻塞队列

六、threadFactory

线程工厂,创建一个新线程时使用的工厂,可以用来设定线程名、是否为daemon线程等等

七、handler

拒绝策略,jdk提供了四种拒绝策略

7.1.CallerRunsPolicy

该策略下,在调用者线程中直接执行被拒绝任务的run方法,除非线程池已经shutdown,则直接抛弃任务

7.2.AbortPolicy

直接丢弃任务,并抛出RejectedExecutionException异常

7.3.DiscardPolicy

直接丢弃,什么都不做

7.4.DiscardOldestPolicy

丢弃进入队列最久的任务,然后把当前任务入队

标签:缓存,java,队列,keepAliveTime,池七大,maximumPoolSize,任务,线程
From: https://www.cnblogs.com/wangbin2188/p/17674660.html

相关文章

  • JavaScript-console 对象
    console对象console对象是JavaScript的原生对象,它有点像Unix系统的标准输出stdout和标准错误stderr,可以输出各种信息到控制台,并且还提供了很多有用的辅助方法。console的常见用途有两个。调试程序,显示网页代码运行时的错误信息。提供了一个命令行接口,用来与网页代码互动。cons......
  • 无涯教程-JavaScript - MODE函数
    MODE函数取代了Excel2010中的MODE.SNGL函数。描述该函数返回数组或数据范围中最频繁出现或重复的值。语法MODE(number1,[number2],...)争论Argument描述Required/OptionalNumber1Thefirstnumberargumentforwhichyouwanttocalculatethemode.RequiredNu......
  • Java入门(02):Java的环境配置
    前言Java是一门广泛应用于各种场景的编程语言,不同于其它编程语言,Java的代码需要在Java虚拟机(JavaVirtualMachine,JVM)上运行,因此在学习和使用Java时,我们需要先进行Java环境的配置。本文将介绍Java环境的配置方法,包括JDK和IDE的安装与配置。摘要本文主要涵盖以下内容:JDK的安......
  • 使用synchronized关键字来同步多个线程操作同一个文件
    使用synchronized关键字来同步多个线程操作同一个文件importjava.io.FileWriter;importjava.io.IOException;publicclassFileSyncExample{privatestaticObjectfile=newObject();publicstaticvoidmain(String[]args)throwsInterruptedException{......
  • sleep、yield、join方法简介与用法 sleep与wait区别 多线程中篇
    转sleep、yield、join方法简介与用法sleep与wait区别多线程中篇1.sleep不会释放锁,不会释放锁,不会释放锁 所以对于sleep方法,要么自己醒来,要么被中断后也会醒来 yield也是静态方法,所以,也是针对于当前线程,当前线程,当前线程。  2.主线程main中调用启动线程(调用start),......
  • 线程的生命周期和状态?
    Java线程的状态及转换线程状态的实质当我们说线程的状态时,说的就是一个变量的值。哪个变量?Thread类中的一个变量privatevolatileintthreadStatus=0;这个值是个整数,可以通过映射关系(VM.toThreadState)转换成一个枚举类publicenumState{NEW,RUNNABLE,BL......
  • 多线程学习第四篇
    4、线程同步机制并发:同一对象被多个线程同时操作(抢票)线程同步是一个等待机制,多个需要同时访问次对象的线程进入这个对象的等待池形成队列,等待前一个线程使用完毕,下一个线程才能使用。形成线程安全的条件:队列和锁由于同一进程的多个线程共享同一块存储空间,在带来方便的同时,也......
  • 多线程学习第五篇
    5、线程协作(线程通信)应用场景:生产者和消费者问题假设仓库中只能存放一件产品,生产者将生产出来的产品放入仓库,消费者将仓库中产品取走消费。如果仓库中没有产品,则将生产者将产品放入仓库,否则停止生产并等待,直到仓库中的产品被消费者取走为止。如果仓库中放有产品,则消费者可以......
  • 多线程学习第三篇
    3、线程状态线程五大状态:创建状态:通过new创建线程就绪状态:通过start()启动线程进入就绪状态阻塞状态:通过CPU调配进入运行状态运行状态:在运行状态时,可以进行如sleep,wait等方法使线程进入阻塞状态死亡状态:自然执行完毕、外部干涉终止线程具体流程为:3.1、线程的常用......
  • 普通Java项目使用lombok的注解
    1手动导入jar包2编译不通过,修改如下设置-Djps.track.ap.dependencies=false......