>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 27265 个阅读者 刷新本主题
 * 贴子主题:  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面向对象编程-->Swing组件(上)
  JavaWeb开发-->JavaWeb应用入门(Ⅰ)
  JSP与Hibernate开发-->数据库事务的概念和声明
  Java网络编程-->Socket用法详解
  精通Spring-->Vue组件开发高级技术
  Vue3开发-->Vue简介
   JAVA进阶之IO模型深入解析
  快速理解 函数式编程,响应式编程,链式编程
  BIO和NIO区别
  好消息:《精通JPA与Hibernate:Java对象持久化技术详解》出...
  JAVA锁相关知识总结
  用VisualVM远程监控Java进程
  java.util.logging.Logger使用详解
  最实用的10个重构小技巧排行榜,你都用过哪些?
  分布式锁的原理和实现
  Eclipse使用指南:Debug 配置
  Java设计模式:迭代器模式
  Java入门实用代码:线程状态监测
  Java入门实用代码:遍历目录
  判断一个字符是否是汉字
  Java程序代码优化技巧
  更多...
 IPIP: 已设置保密
楼主      
1页 1条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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