面经-并发-线程池核心参数

追求适度,才能走向成功;人在顶峰,迈步就是下坡;身在低谷,抬足既是登高;弦,绷得太紧会断;人,思虑过度会疯;水至清无鱼,人至真无友,山至高无树;适度,不是中庸,而是一种明智的生活态度。

导读:本篇文章讲解 面经-并发-线程池核心参数,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

示意图:

面经-并发-线程池核心参数

1.核心线程数:最多保留的线程数(可以为0)

2.最大线程数:核心线程+救急线程

3.workQuene:阻塞队列,对任务起到缓冲作用。还未进行的线程不会直接成为救急线程,而是先存在任务队列中,等核心线程空闲下来后,会被获取执行。(上限控制)

4.救急队列:当核心线程都在运行,任务队列也都放满了,再添加新任务则会添加救急线程。不会保留在线程池中,而是有一定的生存时间。

5.生存时间keepAliveTime;时间单位unit。如果在这个时间范围内没有线程需要执行,则会从线程池把它去掉

6.拒绝策略:核心线程和任务队列满了,救急线程也超过了最大线程数上限,如果还有新任务创建,则采用handler拒绝策略。

7.线程工厂:为线程对象起个好名字。

拒绝策略:

任务队列:先进先出

任务进入后,如果有核心线程则进入核心线程执行;

如果核心线程满了则进入任务队列等待;

如果任务队列满了则创建救急线程(插队执行),执行完毕后救急线程再从任务队列里取靠前的任务执行,执行完所有任务队列后直接从线程池移除救急队列;

当救急线程也忙时,触发拒绝策略:

1.抛异常 AbortPolicy() (默认):线程池资源耗尽时直接抛异常,无法执行新任务。

2.调用者执行 CallerRunsPolicy():由调用者执行超出的任务。

3.丢弃新 DiscardPolicy():丢弃新任务,不报异常和错误。

4.丢弃老 DiscardOldestPolicy():把最早加入队列的任务丢弃掉,再把新任务加入任务队列中。

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

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/128074.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!