关于线程池中线程任务的问题

来源:3-1 线程池的简介

慕函数0594413

2020-07-30

老师你好,在使用线程池开发过程中发现个问题,虽然我们在主线程中等待任务执行的时候,可以设置等待时间,但是我发现对于线程池,那个线程依然是在工作。具体代码如下:
图片描述
所以有没办法,是让线程池中真正在工作的那条线程停止下来。不然遇到耗时的任务,线程池的线程等于就少一条。

问题二
之前课程有个例子是通过 while(!Thread.currentThread().isInterrupted()) 去检测外界有没终止该线程。
线程执行任务的时候,很难一直判断isInterrupted。
假设是一条很耗时的业务任务。是否每执行一个步骤,就手动的判断isInterrupted
这样代码很臃肿。而且业务逻辑中穿插线程状态的判断。感觉不太雅观。
有没什么比较科学的做法。

写回答

1回答

悟空

2020-07-30

正规办法就是通过判断中断,如果任务是单次的,那么可以接受等待执行完毕,如果任务是带循环的,就在循环条件里判断。

0
1
慕函数0594413
非常感谢!
2020-07-31
共1条回复

深度解密Java并发工具,精通JUC,成为并发多面手

JUC全方位讲解,构建并发工具类知识体系

1599 学习 · 573 问题

查看课程