美文网首页
中断Interrupt

中断Interrupt

作者: 以梦为马驾驾驾 | 来源:发表于2022-10-18 23:33 被阅读0次

    参考: https://www.cnblogs.com/lujiango/p/7641983.html
    从下面的demo代码可以看出:
    InterruptedException 被捕获的时候, 中断位会被重置.
    interrupted 先返回当前中断位的状态, 然后重置
    isInterrupted 对中断位没有影响
    先决中断, 即在sleep, wait之前就触发的中断, 就后续的sleep等方法立刻退出, 并且抛出中断异常.

    public class Main {
        public static void main(String[] args) {
            Runnable r = new Runnable() {
                @Override
                public void run() {
                    while(true) {
                    try {
                        System.out.println("interrupted status before sleep: " + Thread.currentThread().isInterrupted());
                        Thread.sleep(6000);
                        System.out.println("Yes, i  can sleep, really good!");
                    } catch (InterruptedException i) {
                        System.out.println("interrupted exception happened");
                        var b = Thread.currentThread().isInterrupted();
                        System.out.println("thread1 interrupted?: " + b);
                        Thread.currentThread().interrupt();
                        System.out.println("after invoke interrupt(): " + Thread.currentThread().isInterrupted());
    
                    }
                    }
    
                }
            };
            var thread = new Thread(r);
            thread.start();
    
            Runnable i = new Runnable() {
                @Override
                public void run() {
                  while(true) {
                    try {
                        Thread.sleep(1000);
                        System.out.println("doing interrupt thread1");
                        thread.interrupt();
                    } catch (InterruptedException i) {
                        System.out.println(Thread.currentThread().isInterrupted());
    
                    }
    
                  }
                }
    
            };
            var t2 = new Thread(i);
    //        t2.start();
    
    
            try{
              Thread.sleep(1000);
            }catch(InterruptedException x) {
              System.out.println();
            }
            System.out.println("xxxxxxxxxxxxxxxx");
            thread.interrupt();
    
    
        }
    }
    

    相关文章

      网友评论

          本文标题:中断Interrupt

          本文链接:https://www.haomeiwen.com/subject/hugjirtx.html