>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 22135 个阅读者 刷新本主题
 * 贴子主题:  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开发-->Web运作原理(Ⅳ)
  JSP与Hibernate开发-->映射对象标识符
  Java网络编程-->用Swing组件展示HTML文档
  精通Spring-->通过Vuex进行状态管理
  Vue3开发-->通过Axios访问服务器
  Java小白们的练手大餐:100道编程题面试题精讲(最新推出)
  观察者模式和发布订阅模式的区别
  JDK14的新特性
  [讨论]书中多线程章节的语言表述有误?
  Java设计模式中的工厂模式和策略模式范例
  Java方法的嵌套与递归调用
  最实用的10个重构小技巧排行榜,你都用过哪些?
  分布式锁的原理和实现
  Java设计模式:解释器模式
  Java入门实用代码:List 循环移动元素
  Java入门实用代码:数组转集合
  Java入门实用代码:获取链表(LinkedList)的第一个和最后一...
  Java 入门实用代码:数组扩容
  JDBC使用8.0驱动包连接mysql设置时区serverTimezone
  Java Pattern和Matcher字符匹配详解
  更多...
 IPIP: 已设置保密
楼主      
1页 1条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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