>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 22305 个阅读者 刷新本主题
 * 贴子主题:  Java入门实用代码:中断线程 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2020-01-21 16:49:41     消息  查看  搜索  好友  邮件  复制  引用

  

Java 实例 - 中断线程

以下实例演示了如何使用interrupt()方法来中断线程并使用 isInterrupted() 方法来判断线程是否已中断:              

Main.java 文件

public   class   Main   extends   Object  
implements   Runnable   {
    public   void   run ( )   {
       try   {
          System . out . println ( " in run() - 将运行 work2() 方法 " ) ;
          work2 ( ) ;
          System . out . println ( " in run() - 从 work2() 方法回来 " ) ;
       }
       catch   ( InterruptedException   x )   {
          System . out . println ( " in run() - 中断 work2() 方法 " ) ;
          return ;
       }
       System . out . println ( " in run() - 休眠后执行 " ) ;
       System . out . println ( " in run() - 正常离开 " ) ;
    }
    public   void   work2 ( )   throws   InterruptedException   {
       while   ( true )   {
          if   ( Thread . currentThread ( ) . isInterrupted ( ) )   {
             System . out . println ( " C isInterrupted()= "  +  Thread . currentThread ( ) . isInterrupted ( ) ) ;
             Thread . sleep ( 2000 ) ;
             System . out . println ( " D isInterrupted()= "  +  Thread . currentThread ( ) . isInterrupted ( ) ) ;
          }
       }
    }
    public   void   work ( )   throws   InterruptedException   {
       while   ( true )   {
          for   ( int   i  =  0 ;  i  <  100000 ;  i ++ )   {
             int   j  =  i  *  2 ;
          }
          System . out . println ( " A isInterrupted()= "  +  Thread . currentThread ( ) . isInterrupted ( ) ) ;
          if   ( Thread . interrupted ( ) )   {
             System . out . println ( " B isInterrupted()= "  +  Thread . currentThread ( ) . isInterrupted ( ) ) ;
             throw   new   InterruptedException ( ) ;
          }
       }
    }
    public   static   void   main ( String [ ]   args )   {
       Main   si  =  new   Main ( ) ;
       Thread   t  =  new   Thread ( si ) ;
       t . start ( ) ;
       try   {
          Thread . sleep ( 2000 ) ;
       }
       catch   ( InterruptedException   x )   {
       }
       System . out . println ( " in main() - 中断其他线程 " ) ;
       t . interrupt ( ) ;
       System . out . println ( " in main() - 离开 " ) ;
    }
}

以上代码运行输出结果为:

in run() - 将运行 work2() 方法

in main() - 中断其他线程

in main() - 离开

C isInterrupted()=true

in run() - 中断 work2() 方法



程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-01-27 15:39:02 重新编辑]
  Java面向对象编程-->多线程(下)
  JavaWeb开发-->自定义JSP标签(Ⅰ)
  JSP与Hibernate开发-->数据库事务的并发问题的解决方案
  Java网络编程-->客户端协议处理框架
  精通Spring-->通过Axios访问服务器
  Vue3开发-->创建综合购物网站应用
  [分享]遊藝場開分員會很難嗎?原來工作項目是這些!
  Java小白们的练手大餐:100道编程题面试题精讲(最新推出)
  Java函数式接口和Stream流
  整理收集的一些常用java工具类
  HashMap中 get 和 put 操作的具体过程
  害怕面试被问HashMap?
  Java设计模式:抽象工厂模式
  Java设计模式:状态模式
  Java虚拟机(JVM)的内存结构
  Java入门实用代码:使用 Enumeration 遍历 HashTable
  Java入门实用代码:集合转数组
  Java入门实用代码:集合输出
  Java入门实用代码:修改链表LinkedList
  Java入门实用代码:100以内整数求和运算
  Java入门实用代码:字符串优化测试
  更多...
 IPIP: 已设置保密
树形列表:   
1页 1条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。