>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 28190 个阅读者 刷新本主题
 * 贴子主题:  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开发-->使用Session(Ⅱ)
  JSP与Hibernate开发-->使用JPA和注解
  Java网络编程-->ServerSocket用法详解
  精通Spring-->Vue组件开发基础
  Vue3开发-->Vue指令
   JAVA进阶之IO模型深入解析
  Java内存设置详解(含内存溢出问题的解决)
  Java并发编程的总结与思考
  18 张图弄懂面试官必问的一致性哈希
  用注解去代替if-else的技巧
  Java关键字final、static使用总结
  java万年历简单制作
  常用的正则表达式汇总
  java比c++强大之处JVM垃圾收集算法
  5个非常有挑战性的Java面试题
  Java 入门实用代码:从 List列表中 截取子列表
  Java入门实用代码:List 循环移动元素
  Java入门实用代码:获取链表(LinkedList)的第一个和最后一...
  Java 入门实用代码:设置文件只读
  Java入门实用代码:打印平行四边形
  更多...
 IPIP: 已设置保密
楼主      
1页 1条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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