当前位置: 首页 > news >正文

嘉定区 网站建设宁波建材信息造价中心

嘉定区 网站建设,宁波建材信息造价中心,做特价的网站百度,软件开发公司简介模板怎么在java中关闭一个thread我们经常需要在java中用到thread#xff0c;我们知道thread有一个start()方法可以开启一个线程。那么怎么关闭这个线程呢#xff1f;有人会说可以用Thread.stop()方法。但是这个方法已经被废弃了。根据Oracle的官方文档#xff0c;Thread.stop是不…怎么在java中关闭一个thread我们经常需要在java中用到thread我们知道thread有一个start()方法可以开启一个线程。那么怎么关闭这个线程呢有人会说可以用Thread.stop()方法。但是这个方法已经被废弃了。根据Oracle的官方文档Thread.stop是不安全的。因为调用stop方法的时候将会释放它获取的所有监视器锁(通过传递ThreadDeath异常实现)。如果有资源该监视器锁所保护的话就可能会出现数据不一致的异常。并且这种异常很难被发现。 所以现在已经不推荐是用Thread.stop方法了。那我们还有两种方式来关闭一个Thread。Flag变量如果我们有一个无法自动停止的Thread我们可以创建一个条件变量通过不断判断该变量的值来决定是否结束该线程的运行。public class KillThread implements Runnable {private Thread worker;private final AtomicBoolean running new AtomicBoolean(false);private int interval;public KillThread(int sleepInterval) {interval sleepInterval;}public void start() {worker new Thread(this);worker.start();}public void stop() {running.set(false);}public void run() {running.set(true);while (running.get()) {try {Thread.sleep(interval);} catch (InterruptedException e){Thread.currentThread().interrupt();log.info(Thread was interrupted, Failed to complete operation);}// do something here}log.info(finished);}public static void main(String[] args) {KillThread killThread new KillThread(1000);killThread.start();killThread.stop();}}上面的例子中我们通过定义一个AtomicBoolean 的原子变量来存储Flag标志。我们将会在后面的文章中详细的讲解原子变量。调用interrupt()方法通过调用interrupt()方法将会中断正在等待的线程并抛出InterruptedException异常。根据Oracle的说明如果你想自己处理这个异常的话需要reasserts出去注意这里是reasserts而不是rethrows因为有些情况下无法rethrow这个异常我们需要这样做Thread.currentThread().interrupt();这将会reasserts InterruptedException异常。看下我们第二种方法怎么调用public class KillThread implements Runnable {private Thread worker;private final AtomicBoolean running new AtomicBoolean(false);private int interval;public KillThread(int sleepInterval) {interval sleepInterval;}public void start() {worker new Thread(this);worker.start();}public void interrupt() {running.set(false);worker.interrupt();}public void stop() {running.set(false);}public void run() {running.set(true);while (running.get()) {try {Thread.sleep(interval);} catch (InterruptedException e){Thread.currentThread().interrupt();log.info(Thread was interrupted, Failed to complete operation);}// do something here}log.info(finished);}public static void main(String[] args) {KillThread killThread new KillThread(1000);killThread.start();killThread.interrupt();}}上面的例子中当线程在Sleep中时调用了interrupt方法sleep会退出并且抛出InterruptedException异常。
http://www.pierceye.com/news/55430/

相关文章:

  • 天津武清做网站的公司图片设计 五星级酒店网站
  • 山西手机版建站系统哪家好网站运维主要做些什么工作
  • 建站公司不给源码滨州网站建设 远洋科技
  • 分享设计作品网站qq邮箱登陆 com登录
  • 深圳南山区住房和建设局网站官网有做火币网这种网站的吗
  • 宁波企业网站制作黄骅市简介
  • 建设网站的需要的工具企业宣传册模版
  • 做网站建设的怎么赢利介绍自己的网页
  • 企业网站制作建站公司如何做网页
  • 网站聚合怎么做崇州市建设局网站
  • 做网站读哪个专业网络营销策略的演变
  • 新手怎么用DW建设一个网站seo工作流程图
  • 网站做百度推广要多少钱wordpress分类权限
  • cms网站开发做国外网站做什么内容好
  • 企业网站的功能可分为前台和后台两个部分免费的黄冈网站有哪些平台软件
  • 免费自助建站系统平台 贴吧在哪里建设网站
  • 怎么制作一个网站教程网站建设引入谷歌地图
  • 网站建设xml下载wordpress post link
  • 网站建设短信又拍云 wordpress
  • 湛江市住房和城乡建设网站模板尺寸规格及价格
  • 湖南做网站 安全还踏实磐石网络怎样修wordpress插件页脚
  • 石碣企业网站建设公司上海美容网站建设
  • 永春网站设计wordpress进入后台
  • 网站与网页 主页的概念及它们的区别苏州网站建设seo
  • 网站建设的想法做cover用什么网站
  • 北京公司网站制作衡粘水佩网站建设
  • 网站开发费属于软件费吗公众号怎么做文章编辑
  • 男女做暧昧试看网站搬瓦工putty做网站
  • 网站买流量是怎么做的wordpress5.0编辑器
  • 网站制作开发的步骤和方法贺州网站建设