2016 - 2024

感恩一路有你

线程池的四种拒绝策略 线程池的五个参数?

浏览量:2511 时间:2021-03-10 20:18:46 作者:admin

线程池的五个参数?

Corepollsize:核心线程数。

Maximumpoolsize:最大线程数。

Keepalivetime:空闲线程的保留时间。

Timeunit:空闲线程保留时间的单位。

阻塞队列<runnable>:阻塞队列以存储等待执行的任务。

Threadfactory:用于创建线程的线程工厂。

Rejectedexecutionhandler:队列已满且任务量大于最大线程数时的异常处理策略。

如何优雅的使用和理解线程池?你怎么看?

要理解和使用好java线程池,需要掌握并发编程的基本知识,认真阅读和学习线程池API的所有官方文档。合理使用线程池的要点总结如下:1。例如,您希望将同步API更改为异步,还是希望同时请求多个外部服务,或者减少线程的创建和销毁以处理用户请求。

2. 根据您的实际项目需求,配置线程池的参数,包括corepoolsize、maximumpoolsize、blocking queue、keepalivetime、thread factory和saturation policy(或rejectedexecutionhandler)。

3. 根据应用程序的特点部署线程池。一些后台服务应用程序适合在启动时创建线程池,并且在应用程序执行期间不修改线程池。有时,应用程序适合临时创建线程池,将任务提交给它,并在使用后立即销毁它。

4. 当您决定不再使用线程池时,应该调用shutdown()来正常关闭线程池。Shutdown可以保证以前提交到线程池的任务不会被丢弃,保证了数据的安全性。

5. 调用shutdown后,线程池此时可能正在执行任务,但提交任务的条目被关闭。如果需要等待线程池完全终止,则需要调用waitterminate以等待线程池处理队列中的所有任务并清理它们,然后返回。Awaitterminate成功返回,线程池被彻底清理。

总之,线程池按创建(构造方法)、提交任务(执行)、关闭和等待清理结束(等待终止)的顺序调用API。只有这样,我们才能优雅地使用线程池。为了更好地利用java线程池并最大限度地提高优化程序的性能,您可以参考我官方帐户中的分析文章。

线程池处理流程是什么?

任务提交后,线程池首先确定线程数是否达到核心池大小。如果未达到线程数,则创建一个核心线程来处理任务;否则,执行下一步;

然后线程池判断任务队列是否已满。如果没有,则将任务添加到任务队列;否则,执行下一步;

然后,由于任务队列已满,线程池将判断线程数是否达到最大值。否则,将创建一个非核心线程来处理该任务;否则,将执行饱和策略,并在默认情况下引发rejectedexecutionexception异常。

线程池的四种拒绝策略 线程池execute和submit区别 java线程池自定义拒绝策略

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。