>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 22121 个阅读者 刷新本主题
 * 贴子主题:  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中使用JavaBean(Ⅱ)
  JSP与Hibernate开发-->持久化层的映射类型
  Java网络编程-->基于UDP的数据报和套接字
  精通Spring-->Vue简介
  Vue3开发-->计算属性和数据监听
   JAVA进阶之IO模型深入解析
  套接字通信:select、poll、epoll的区别
  JDK14的新特性
  [讨论]书中多线程章节的语言表述有误?
  超详细的Java运算符修炼手册(优秀程序员不得不知道的运算技...
  Java设计模式:解释器模式
  java比c++强大之处JVM垃圾收集算法
  Java 入门实用代码:从 List列表中 截取子列表
  Java入门实用代码: 集合中添加元素
  Java入门实用代码:集合转数组
  Java入门实用代码:获取链表(LinkedList)的第一个和最后一...
  Java入门实用代码:100以内整数求和运算
  Java入门实用代码:自定义异常
  Java 入门实用代码:汉诺塔算法
  Java入门实用代码:字符串优化测试
  更多...
 IPIP: 已设置保密
楼主      
1页 1条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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