zoukankan      html  css  js  c++  java
  • java终止线程的通用机制

          

     线程的终止其实很简单,只要在实现Runnable的类中添加cancel()方法和cancel标记。如:
           private static volatile boolean canceled = false;
           public static void cancel(){ canceled = true;}
           注意,这里是volatile标记的static布尔值,因为这是接下来的方法中都会用到的,而且其值的变化会对它们产生影响,所以是static。volatile就像之前说过的,标记这个布尔值为共享的,使得接下来的与其有直接或者间接的synchronized方法都能看到它的变化,然后就是设置一个方法cancel(),基本上这个方法都是使canceled的值为true,如:
           public static void cancel(){ canceled = true;}
           然后在run()方法中都会针对canceled的值的情况作出相应的处理,一般都会有提示该线程停止的输出提示。
           其实上面的,都只是该停止线程的提示而已,并没有真正意义上的终止线程的作用,只不过当我们调用cancel()方法是为了告诉用户,我这里就要终止线程了,并且要终止那个线程,能够终止线程的,还是Executor类的shutdown()这个方法。
           这里有个疑问,就是有shutdown()和shutdownNow(),它们有什么区别呢?照我的理解,就是线程的关闭并不是马上的,而调用shutdownNow()可以马上关闭,那么到底该选哪个呢?我觉得,这只是性能上的小小优化而已,不必过于在意,而且有时候马上关闭线程还会影响其他线程。
  • 相关阅读:
    haproxy 2.5 发布
    cube.js sql 支持简单说明
    基于graalvm 开发一个cube.js jdbc driver 的思路
    apache kyuubi Frontend 支持mysql 协议
    oceanbase 资源池删除说明
    基于obd 的oceanbase 扩容说明
    jfilter一个方便的spring rest 响应过滤扩展
    cube.js schema 定义多datasource 说明
    typescript 编写自定义定义文件
    meow 辅助开发cli 应用的工具
  • 原文地址:https://www.cnblogs.com/wenjiang/p/2660547.html
Copyright © 2011-2022 走看看