package ThreadDemo; /** * @author:Gerry * @description: * @date: Created in 2018/12/25 */ public class ShutdownThread { public static void main(String[] args) { Runner one = new Runner(); Thread countThread = new Thread(one, "CountThread"); countThread.start(); // ç¡ç 2ç§ï¼main线ç¨å¯¹CountThreadè¿è¡ä¸æï¼ä½¿CountThreadè½å¤æç¥ä¸æèç»æ SleepUtils.second(2); countThread.interrupt(); Runner two = new Runner(); countThread = new Thread(two, "CountThread"); countThread.start(); // ç¡ç 2ç§ï¼main线ç¨å¯¹Runner twoè¿è¡åæ¶ï¼ä½¿CountThreadè½å¤æç¥on为falseèç»æ SleepUtils.second(2); two.cancle(); } public static class Runner implements Runnable { private long i; private volatile boolean on = true; @Override public void run() { while (on && !Thread.currentThread().isInterrupted()) { i++; } System.out.println("Count =" + i); } public void cancle() { on = false; } } }