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

    友情链接

  • 相关阅读:
    http 状态码及含义
    PHP CURL 调用API
    Bootstrap
    JavaScript和快速响应的用户界面
    GitHub配置步骤和简单的git关联
    Git的导入
    java 对象 类 知识点 概览
    java程序执行时,JVM内存
    java区分大小写,使用TAB进行缩进,public类名只能有一个,而且文件名与类名保持一致.
    第六章 进程总结
  • 原文地址:https://www.cnblogs.com/huhx/p/baseusejavathreadinterrupt.html
Copyright © 2011-2022 走看看