• java基础---->多线程之interrupt(九)


      这里我们通过实例来学习一下java多线程中关于interrupt方法的一些知识。执者失之。我想当一个诗人的时候,我就失去了诗,我想当一个人的时候,我就失去了我自己。在你什么也不想要的时候,一切如期而来。

    java多线程中的interrupt实例

    一、java中的interrupt的使用

    public class InterruptTest {
        public static void main(String[] args) {
            MyThread1 myThread1 = new MyThread1();
            myThread1.start();
    
            myThread1.interrupt();
            System.out.println("isInterrupted is " + myThread1.isInterrupted()); // true
            System.out.println("isInterrupted is " + myThread1.interrupted()); // false
        }
    
        static class MyThread1 extends Thread {
            @Override
            public void run() {
                try {
             // The interrupted status of the thread is cleared by this method
                    System.out.println("in isInterrupted is " + Thread.interrupted()); // true
                    System.out.println("isInterrupted is " + Thread.currentThread().isInterrupted()); // false
                    TimeUnit.SECONDS.sleep(5);
                    System.out.println("my thread 1");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }

     如果注释掉代码:System.out.println("in isInterrupted is " + Thread.interrupted());则打印的结果如下:

    isInterrupted is true
    isInterrupted is false
    isInterrupted is true
    java.lang.InterruptedException: sleep interrupted
        at java.lang.Thread.sleep(Native Method)
        at java.lang.Thread.sleep(Thread.java:340)
        at java.util.concurrent.TimeUnit.sleep(TimeUnit.java:360)
        at com.linux.huhx.thread2.InterruptTest$MyThread1.run(InterruptTest.java:21)

    二、多线程中的中断停止线程运行

    public class InterruptTest {
        public static void main(String[] args) throws Exception {
            MyThread1 myThread1 = new MyThread1();
            myThread1.start();
    
            myThread1.interrupt();
            System.out.println("isInterrupted is " + myThread1.isInterrupted()); // true
            System.out.println("isInterrupted is " + myThread1.interrupted()); // false
        }
    
        static class MyThread1 extends Thread {
            @Override
            public void run() {
                while (true) {
                    if (Thread.interrupted()) {
                        System.out.println("break");
                        break;
                    }
                    System.out.println("count " + Thread.currentThread().isInterrupted()); // count false
                }
            }
        }
    }

    一次的运行结果如下:

    isInterrupted is true
    isInterrupted is false
    break

    友情链接

  • 相关阅读:
    Web 跨域请求(OCRS) 前端解决方案
    接口与抽象
    观察者模式
    建造者模式(Builder)
    外观设计模式 (Facade)
    模板方法模式( TemplateMethod)
    原型模式(ProtoType)
    简单工厂法( Factory Method)
    backup与recover
    Oracle自动备份脚本的实现
  • 原文地址:https://www.cnblogs.com/huhx/p/baseusejavathreadinterrupt.html
Copyright © 2020-2023  润新知