码迷,mamicode.com
首页 > 编程语言 > 详细

关闭线程的一些问题

时间:2015-08-18 01:03:49      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:

  Thread.stop方法,虽然它确实停止了一个正在运行的线程,然而,这种方法是不安全也是不受提倡的,不应该使用stop方法来关闭Java的线程。

  正确的方法应该是设置volatile boolean stop = false;,这样所有线程可以及时发现stop值的变化,线程运行的过程中周期性或关键点检查stop值,当发现stop被其他线程置为了true时,终止线程的运行。

 

  但是上面的方法也有不完善的地方,当线程wait、sleep等情况下将无法判断stop的值,也就是说线程可能会永远的阻塞下去。所以希望关闭线程,除了周期性或关键点检查stop值,还要调用Interrupt来中断阻塞状态的线程。

  即使做了如上的操作,线程可能也不会立即终止,需要等待操作系统调度的结束。

 

  ExecutorService的shutdown是缓慢关闭线程池,无法加入新的任务,shutdownNow是希望立即关闭线程池,shutdownNow中就调用了interrupt,但是调用的是interrupt,也不会立即关闭。

  ExecutorService不调用shutdown,将会在所有任务完成后1分钟关闭线程池。

 

  

  

关闭线程的一些问题

标签:

原文地址:http://www.cnblogs.com/lnlvinso/p/4738105.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!