我是靠谱客的博主 迷你香水,最近开发中收集的这篇文章主要介绍《转载》 ThreadPool shutdown 与shutdownNow,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

ThreadPool shutdown 与shutdownNow
https://blog.csdn.net/liulipuo/article/details/39004279

线程的暂停有两个方法 shutdown 与shutdownNow 两个方法的调用都会阻止新任务的提交,区别是关于已经提交未完成任务的处理已经线程终端的处理:

  • shutdown会继续执行并且完成所有未执行的任务,shutdownNow 会清楚所有未执行的任务并且在运行线程上调用interrupt() 。

写个例子验证下吧:

package com.other.Thread;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.RejectedExecutionException;

public class ThreadPoolTest {

	ExecutorService executor;

	public static void main(String[] args) {
		ThreadPoolTest threadInterupttest = new ThreadPoolTest();
		threadInterupttest.executor = Executors.newSingleThreadExecutor();

		for (int i = 1; i <= 5; i++) {
			try {
				threadInterupttest.executor.execute(threadInterupttest.new MyRunnable(i));
			} catch (RejectedExecutionException e) {
				System.out.println(e.getMessage() + "    " + i);
			}

			if (i == 4) {
				threadInterupttest.executor.shutdownNow();
			}
		}
	}

	class MyRunnable implements Runnable {

		public int i;
		public MyRunnable(int i) {
			this.i = i;
		}

		@Override
		public void run() {
			// int a = 0;
			// for (double m = 0; m < Integer.MAX_VALUE; m++) {
			// a++;
			// }

			try {
				Thread.sleep(2000);
			} catch (InterruptedException e) {
				System.out.println(e.getMessage() + "          " + i);
			}

			System.out.println("I am the " + i + " task");
		}
	}
	
	
}

运行结果为 :

sleep interrupted          1
I am the 1 task
null    5
  • 代码中我们使用了一个单线程的线程池,我们提交给线程池执行的任务是每个任务休眠2秒然后打印一下任务ID,我们使用了一个循环填加5个任务,并且在添加完第4个后终止线程池调用的方法是 shutdownNow(),从打印的结果看 第个任务执行完了,但是接受到了中断异常,而 2,3,4任务并没有执行,第5个任务添加的时候报了RejectedExecutionException,也就是任务添加被拒绝了。

我们把shutdownNow改成shutDown 看下运行结果:

null    5
I am the 1 task
I am the 2 task
I am the 3 task
I am the 4 task

第5个任务被拒绝了,其他提交的任务都执行了,并且没有收到中断请求!

这也验证了文章开始对两个方法的解释。

最后

以上就是迷你香水为你收集整理的《转载》 ThreadPool shutdown 与shutdownNow的全部内容,希望文章能够帮你解决《转载》 ThreadPool shutdown 与shutdownNow所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部