线程中断机制

线程中断机制
  • public static native void sleep(long millis) throws InterruptedException

    if any thread has interrupted the current thread. The interrupted status of the current thread is cleared when this exception is thrown(调用sleep后抛出异常时,会清除线程的状态)

  • public void interrupt(): 中断线程

  • public static boolean interrupted(): 判断线程是否被中断,并清除线程状态
  • public boolean isInterrupted(): 判断线程是否被中断,但不清除线程状态
public static void interruptMechanism() throws InterruptedException {
   Thread t1 = new Thread(){
       @Override
       public void run() {
           while (!Thread.currentThread().isInterrupted()){
               System.out.println(Thread.currentThread().getName() + " is running");
               try {
                   System.out.println(Thread.currentThread().getName() + " is sleeping");
                   Thread.sleep(1000);
                   System.out.println(Thread.currentThread().getName() + " end sleep");
               } catch (InterruptedException e) {
                   //再次设置中断标志位,在Thread.sleep中被中断后,sleep会清除标志位
                   //此时Thread.currentThread().isInterrupted()还是等于true
                   Thread.currentThread().interrupt();
                   //after执行Thread.currentThread().interrupt();
                   //此时Thread.currentThread().isInterrupted()等于false
               }
           }
           if (Thread.currentThread().isInterrupted()){
               System.out.println(Thread.currentThread().getName() + " is stop");
           }
       }
   };

   t1.start();
   Thread.sleep(2000);
   t1.interrupt();
}

public static void main(String[] args) {
   try {
       interruptMechanism();
   } catch (InterruptedException e) {
       e.printStackTrace();
   }
}

结果:

Thread-0 is running
Thread-0 is sleeping
Thread-0 end sleep
Thread-0 is running
Thread-0 is sleeping
Thread-0 end sleep
Thread-0 is stop
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值