线程池的shutdown和shutdownNow方法实测区别

有点纠结线程池关掉后,队列里面的线程是否还能执行,做了以下实验,得出结论,shutdown方法 执行后,队列中的还能执行完毕,shutdownNow方法后不能执行了。

1、shutdown方法 

        ExecutorService service = Executors.newFixedThreadPool(2);

		for(int i=0;i<10;i++){
			final int j=i;
			service.execute(
					new Runnable() {
						@Override
						public void run() {
							try {
								Thread.sleep(1000);
							} catch (InterruptedException e) {
								e.printStackTrace();
							}
							System.out.println(j);
						}
					}
			);
			System.out.println(j+":aaaaaaaaaaaa");
		}

		service.shutdown();
		System.out.println(":关闭");
		Thread.sleep(100000);

0:aaaaaaaaaaaa
1:aaaaaaaaaaaa
2:aaaaaaaaaaaa
3:aaaaaaaaaaaa
4:aaaaaaaaaaaa
5:aaaaaaaaaaaa
6:aaaaaaaaaaaa
7:aaaaaaaaaaaa
8:aaaaaaaaaaaa
9:aaaaaaaaaaaa
:关闭
1
0
2
3
4
5
7
6
9
8

Process finished with exit code 0

2、shutdownNow方法

0:aaaaaaaaaaaa
1:aaaaaaaaaaaa
2:aaaaaaaaaaaa
3:aaaaaaaaaaaa
4:aaaaaaaaaaaa
5:aaaaaaaaaaaa
    at java.lang.Thread.sleep(Native Method)
6:aaaaaaaaaaaa
7:aaaaaaaaaaaa
    at us.codecraft.tinyioc.BeanFactoryTest$1.run(BeanFactoryTest.java:40)
8:aaaaaaaaaaaa
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
9:aaaaaaaaaaaa

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
:关闭

    at java.lang.Thread.run(Thread.java:748)
0

java.lang.InterruptedException: sleep interrupted
    at java.lang.Thread.sleep(Native Method)
    at us.codecraft.tinyioc.BeanFactoryTest$1.run(BeanFactoryTest.java:40)
1
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

Process finished with exit code 0

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值