zoukankan      html  css  js  c++  java
  • 关闭线程的一些问题

      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分钟关闭线程池。

      

      

  • 相关阅读:
    JQuery学习四(过滤选择器)
    JQuery学习三(隐式迭代和节点遍历)
    JQuery学习二(获取元素控件并控制)
    JQuery学习一
    Dom中select练习
    DOM动态操纵控件案例
    DOM学习控件定位和案例
    DOM案例五星评分控件
    DOM动态增加控件
    DOM用TagName操作标签
  • 原文地址:https://www.cnblogs.com/lnlvinso/p/4738105.html
Copyright © 2011-2022 走看看