zoukankan      html  css  js  c++  java
  • 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

    友情链接

  • 相关阅读:
    使用Systemctl命令来管理系统服务
    使用lsblk命令列出系统中的块设备
    史上最全 | 1000余个实用尽调网站分类汇编
    ​2021年机器学习什么风向?谷歌大神Quoc Le:把注意力放在MLP上
    上手使用 DeepMind 分布式强化学习框架 Acme ,对开发者超友好
    005-ESP32学习开发(SDK)-新建工程补充-通过官方示例创建工程
    Golang 程序中实现优雅关闭 HTTP SERVER
    Golang的time.NewTicker周期性定时器使用案例
    彻底搞懂golang的GOROOT和GOPATH
    微服务之-ServiceMesh
  • 原文地址:https://www.cnblogs.com/huhx/p/baseusejavathreadinterrupt.html
Copyright © 2011-2022 走看看