From 59dbea0ecc835cf9e18f887b9cc20236ffbd0bb9 Mon Sep 17 00:00:00 2001 From: Jason Lu Date: Sun, 2 Mar 2025 21:22:12 +0800 Subject: [PATCH] add demo for interrupt --- src/main/java/threaddemo/InterruptTest.java | 40 +++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/main/java/threaddemo/InterruptTest.java diff --git a/src/main/java/threaddemo/InterruptTest.java b/src/main/java/threaddemo/InterruptTest.java new file mode 100644 index 0000000..f83cb84 --- /dev/null +++ b/src/main/java/threaddemo/InterruptTest.java @@ -0,0 +1,40 @@ +package threaddemo; + +public class InterruptTest implements Runnable{ + @Override + public void run() { + try { + while(true) { + boolean a = Thread.currentThread().isInterrupted(); + System.out.println(STR."in run() - about to sleep for 20 seconds------- \{a}"); + Thread.sleep(20000L); + } + } catch (InterruptedException e) { + //如果不加上这一句,那么cd将会都是false,因为在捕捉到InterruptedException异常的时候就会自动的中断标志置为了false + Thread.currentThread().interrupt(); + boolean c = Thread.interrupted(); //true + boolean d = Thread.interrupted(); //false + + System.out.println(STR."c = \{c}"); + System.out.println(STR."d = \{d}"); + } + } + + public static void main(String[] args) { + InterruptTest it = new InterruptTest(); + Thread t = new Thread(it); + + t.start(); + + try { + Thread.sleep(2000L); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + System.out.println("in main() - interrupting other thread"); + //中断线程t + t.interrupt(); + System.out.println("in main() - leaving"); + } +}