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"); + } +}