2021-04-18 15:53  阅读(79)
文章分类:Java 基础实战 文章标签:JavaJava 教程
©  原文作者:w3cschool 原文地址:https://www.w3cschool.cn/java/java-examples.html

以下实例演示了如何使用interrupt()方法来中断线程并使用 isInterrupted() 方法来判断线程是否已中断:

    /*
     author by w3cschool.cn
     Main.java
     */
    
    public class Main extends Object 
    implements Runnable {
       public void run() {
          try {
             System.out.println("in run() - 将运行 work2() 方法");
             work2();
             System.out.println("in run() - 从 work2() 方法回来");
          }
          catch (InterruptedException x) {
             System.out.println("in run() - 中断 work2() 方法");
             return;
          }
          System.out.println("in run() - 休眠后执行");
          System.out.println("in run() - 正常离开");
       }
       public void work2() throws InterruptedException {
          while (true) {
             if (Thread.currentThread().isInterrupted()) {
                System.out.println("C isInterrupted()=" + Thread.currentThread().isInterrupted());
                Thread.sleep(2000);
                System.out.println("D isInterrupted()=" + Thread.currentThread().isInterrupted());
             }
          }
       }
       public void work() throws InterruptedException {
          while (true) {
             for (int i = 0; i < 100000; i++) {
                int j = i * 2;
             }
             System.out.println("A isInterrupted()=" + Thread.currentThread().isInterrupted());
             if (Thread.interrupted()) {
                System.out.println("B isInterrupted()=" + Thread.currentThread().isInterrupted());
                throw new InterruptedException();
             }
          }
       }
       public static void main(String[] args) {
          Main si = new Main();
          Thread t = new Thread(si);
          t.start();
          try {
             Thread.sleep(2000);
          }
          catch (InterruptedException x) {
          }
          System.out.println("in main() - 中断其他线程");
          t.interrupt();
          System.out.println("in main() - 离开");
       }
    }
    

以上代码运行输出结果为:

    in run() - 将运行 work2() 方法
    in main() - 中断其他线程
    in main() - 离开
    C isInterrupted()=true
    in run() - 中断 work2() 方法
    
点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> Java 实例 – 中断线程
上一篇
Java 实例 – 查看线程优先级