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

品品牌牌建建设设网站建设银行官网网站员工招聘

品品牌牌建建设设网站,建设银行官网网站员工招聘,沈阳网站制作全网性,多米诺网站建设服务如何中断一个线程#xff1f; 首先一个线程不应该由其他线程来强制中断或者停止#xff0c;而是应该由线程自己自行停止。所以我们看到线程的stop()、resume()、suspend()等方法已经被标记为过时了。 其次在java中没有办法立即停止一个线程#xff0c;然而停止线程显得尤为重…如何中断一个线程 首先一个线程不应该由其他线程来强制中断或者停止而是应该由线程自己自行停止。所以我们看到线程的stop()、resume()、suspend()等方法已经被标记为过时了。 其次在java中没有办法立即停止一个线程然而停止线程显得尤为重要比如取消一个耗时的操作。因此java提供了一种用于停止线程的协商机制 - 中断也就是中断标识协商机制。如果你要中断一个线程你需要手动调用该线程的interrupt方法改方法仅仅将该线程对象的中断标设置成true接着程序员需要自己写代码不断的检测当前线程的标识位。 中断线程三个相关方法 interrupt() 该方法是一个实例方法仅仅是设置线程的中断标识状态为true发起一个协商而不会立即停止改线程。 interrupted() 该方法是一个静态方法判断线程是否被中断并清除当前线程中断状态。该方法干了两个事情 返回当前线程中断状态测试当前线程是否已经被中断将当前线程的中断状态重新设置成false清除线程的中断状态 isInterrupted() 该方法是一个实例方法判断当前线程是否被中断 中断一个线程的正确姿势 volatile关键字修饰的变量 static volatile boolean volatileStop false;public static void main(String[] args) {new Thread(() - {while (true) {if (volatileStop) {System.out.println(Thread.currentThread().getName() 跳出当前循环);break;}System.out.println(Thread.currentThread().getName() hell volatile);}}, A).start();try {TimeUnit.MILLISECONDS.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}new Thread(() - {volatileStop true;}, B).start();} 通过AtomicBoolean static AtomicBoolean atomicStop new AtomicBoolean();public static void main(String[] args) {new Thread(() - {while (true) {if (atomicStop.get()) {System.out.println(Thread.currentThread().getName() atomicStop被设置成true跳出当前循环);break;}System.out.println(Thread.currentThread().getName() hell AtomicBoolean);}}, A).start();try {TimeUnit.MILLISECONDS.sleep(20);} catch (InterruptedException e) {e.printStackTrace();}new Thread(() - {atomicStop.set(true);}, B).start();} 通过Thread自带的apiinsterrupt()方法和isInterrupted()方法 在需要中断的线程中不断监听中断状态一旦发生中断就执行相应的中断处理业务逻辑stop线程。 public static void main(String[] args) {Thread a new Thread(() - {while (true) {if (Thread.currentThread().isInterrupted()) {System.out.println(Thread.currentThread().getName() isInterrupted 被设置成true跳出当前循环);break;}System.out.println(Thread.currentThread().getName() hell interrupt api);}}, A);a.start();try {TimeUnit.MILLISECONDS.sleep(20);} catch (InterruptedException e) {e.printStackTrace();}new Thread(() - {a.interrupt();}, B).start();} 总结 当对一个线程调用interrupt()方法时 如果线程处于正常活动状态那么会将该线程的中断标志位设置为true仅此而已。被设置中断标识的线程将继续正常运行不受影响。所以interrupt()方法并不能真正的中断线程需要被调用方的线程自己配合好才行。如果线程处于被阻塞状态例如sleep、wait、join等在别的线程中调用interrupt方法那么该线程将立即退出阻塞状态并抛出一个InterruptedException异常且会清除线程的中断状态。如果线程已经中断、不活动将不会有任何影响。
http://www.w-s-a.com/news/50308/

相关文章:

  • 高稳定性的网站设计制作wordpress 检测插件
  • 无锡网站制作排名自适应网站建设推荐
  • 度娘网站桃花怎么做网站制作 p
  • 小欢喜林磊儿什么网站做家教搜索优化公司
  • 龙岗做网站哪里找网站建设简介是什么意思
  • 做网站的标准北京西站出站口
  • asp.net新建网站市场营销管理是做什么的
  • 南昌网站建设模板服务商建设什么网站挣钱
  • 网站建设实训记录企业网站建设运营
  • 视频网站文案住房和城乡建设部门
  • 汕头网站排名推广新余门户网站开发
  • 湖南智能网站建设哪家好wordpressμ
  • 公司网站备案必须是企业信息么睢宁县凌城做网站的
  • 上海网站建设公司 珍岛宁波免费自助建站模板
  • 南昌知名的网站建设公司南京网站开发选南京乐识赞
  • 外贸网站建设 深圳seo怎么提升关键词的排名
  • 网站推广效果的评价google关键词
  • 模板网站建站哪家好做微信充值网站
  • 抽奖的网站怎么做的广州小程序定制开发
  • 网站的文件夹建设企业网站公积金
  • 做网站的的价位网站建设 考试题目
  • 深圳比邻网站建设北京优化服务
  • 菏泽网站建设哪家好电子商务网络安全
  • 仿一个网站广州网站建设正规公司
  • 网站建设 目的seo网站关键词排名快速
  • 什么叫做响应式网站自媒体全平台发布
  • 企业网站 案例哪里需要人做钓鱼网站
  • 厚街东莞网站建设网站开发者调试模式
  • 网站推广营销联系方式wordpress adminlte
  • 哪些网站可以做文字链广告卖水果网站建设的策划书