问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

面试题:线程池有几种实现方式,线程池的七大参数有哪些?

发布网友 发布时间:2022-04-24 15:06

我来回答

1个回答

热心网友 时间:2022-04-27 04:45

在Java编码的过程中,我们经常会创建一个线程来提高程序的执行效率,虽然这样实现起来很方便,但是会有一个问题:如果并发的线程数多,并且每个线程都是执行一个时间很短的任务就结束了,这样会造成频繁的创建和销毁线程从而导致降低系统的效率。
那么问题来了,有没有办法可用复用创建好的线程呢,也就是线程执行完一个任务后,不被销毁,继续执行其他的任务?

在Java可以通过线程池来实现这样的效果。
下面从三个方面和大家一起来探讨一下Java线程池相关的内容。
1.Java中的ThreadPoolExecutor类。
2.Java中4种线程池的使用。
3.Java线程池常用参数如何设置。

一、Java中的ThreadPoolExecutor类

A.ThreadPoolExecutor的重要参数

1.corePoolSize:核心线程数
核心线程会一直存活,及时没有任务需要执行。
当线程数小于核心线程数时,即使有线程空闲,线程池也会优先创建新线程处理。
设置allowCoreThreadTimeout=true(默认false)时,核心线程会超时关闭。
2.queueCapacity:任务队列容量(阻塞队列)
当核心线程数达到最大时,新任务会放在队列中排队等待执行。
3.maxPoolSize:最大线程数
当线程数>=corePoolSize,且任务队列已满时。线程池会创建新线程来处理任务。
当线程数=maxPoolSize,且任务队列已满时,线程池会拒绝处理任务而抛出异常。
4.keepAliveTime:线程空闲时间
当线程空闲时间达到keepAliveTime时,线程会退出,直到线程数量=corePoolSize。
如果allowCoreThreadTimeout=true,则会直到线程数量=0。
5.allowCoreThreadTimeout:允许核心线程超时
6.rejectedExecutionHandler:任务拒绝处理器。

B.ThreadPoolExecutor执行过程

1.当线程数小于核心线程数时,创建线程。

2.当线程数大于等于核心线程数,且任务队列未满时,将任务放入任务队列。

3.当线程数大于等于核心线程数,且任务队列已满。(1)若线程数小于最大线程数,创建线程。(2)若线程数等于最大线程数,抛出异常,拒绝任务。

二、Java中4种线程池
Java通过Executors提供四种线程池,分别为:
newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
newScheledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
请帮忙查iphone4手机的序列号dx3hnchpdp0n DX3J481PDP0N帮忙查一下 是真的吗 我不会查 大神们是翻新的? 苹果4激活日期查询 猫猫一直发情怎么办呢 如何帮助猫咪度过发情期呢? 本科英语都要过4级吗 车子中间的踏板是什么 高考400分能考哪些军事类二本 联通3g双卡双待智能导航手机 ...可以一个卡装移动2g的卡,专打电话,一个卡装联通3g流量卡吗 办公楼一层楼有7个消防栓,请问需要配备多少灭火器? 高层住宅建筑每个楼层一定要配置灭火器吗? ...的手机号申请代办的,现在手机换号了,怎么重新申请代办? 32层高楼道手提干粉灭火器的要求 戴尔服务器出厂日期怎么查 戴尔笔记本生产日期查询,快速服务代码33674416521。谢谢! DELL笔记本如何查询出厂日期? 快速代码 :13421100925 戴尔台式机怎么查出厂日期? 戴尔灵越13pro5310怎么查生产日期 请问,怎么查询戴尔笔记本电脑的出厂日期 你我贷下载 什么是你我贷 黑芝麻枸杞红薯干白酒功效 你我贷是做什么的啊?现在怎么样 你我贷是什么样的公司啊 大黄米跟紫薯干煮粥有什么功效 我想开美团多些订单,怎么开 美团怎样一次两单以上单 怎么看外卖送餐员接多个单在一起送? 办理专利权质押注销登记有什么程序? Java面试题,线程的几种状态是什么 多线程面试题,没有思路。还请达人指点。 面试时如何解答什么是继承?什么是多态?什么是线程? C面试题:单线程与多线程的问题 面试题:1,进程和线程的区别 java面试经常问的线程的问题,来说点 java多线程runnable和thread的区别 面试题 飞机行程单是什么? 机票行程单可以扫描吗 如何查询机票行程单? 飞机的行程单是做什么用的? 飞机行程单是什么 机票里的行程单是什么意思? 机票行程单如何获取? 飞机的行程单是什么? 怎样申请发明优先审查? 飞机行程单有什么用? [机票]什么是机票行程单? 申请专利提前优先审查 是怎么申请的 什么样的专利申请可以办理优先审查?