shutdownNow试图停止当前正执行的task,并返回尚未执行的task的list
使用 fixedThreadPool.shutdown() 防止新任务提交到线程,已经提交的继续执行
通过线程池的 isTerminated() 方法不断检测,线程池中的任务是否都执行完成
shutdown调用后,不可以再submit新的task,已经submit的将继续执行。
代码
public class ThreadPool {
static ExecutorService fixedThreadPool;
static {
fixedThreadPool = Executors.newFixedThreadPool(10);
}
public static void Threads() {
fixedThreadPool.execute(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("线程执行内容");
}
});
}
public static void main(String[] args) {
for (int i = 1; i <= 100; i++) {
Threads();
}
fixedThreadPool.shutdown();
while (true) {
if (fixedThreadPool.isTerminated()) {
System.out.println("所有子线程执行完毕");
break;
}
}
}
}
版权声明:本文为原创文章,版权归本站所有,欢迎分享本文,转载请保留出处!