/** * 停止线程 */ public class StopThread { /** 线程对象 */ private ThreadA thread = new ThreadA(); /** 自定义线程类 */ class ThreadA extends Thread { // 用一个boolean值标记线程是否需要运行。 private boolean running = false; // 覆盖了父类的start方法, public void start() { // 将running置为ture,表示线程需要运行 this.running = true; super.start(); } public void run() { System.out.println("ThreadA begin!"); int i = 0; try { // 如果running为真,说明线程还可以继续运行 while (running) { System.out.println("ThreadA: " + i++); // sleep方法将当前线程休眠。 Thread.sleep(200); } } catch (InterruptedException e) { } System.out.println("ThreadA end!"); } public void setRunning(boolean running) { this.running = running; } } /** * 启动ThreadA线程 */ public void startThreadA() { System.out.println("To start ThreadA!"); thread.start(); } /** * 停止ThreadA线程 */ public void stopThreadA() { System.out.println("To stop ThreadA!"); thread.setRunning(false); } public static void main(String[] args) { StopThread test = new StopThread(); // 启动ThreadA线程 test.startThreadA(); // 当前线程休眠一秒钟 try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } // 停止ThreadA线程 test.stopThreadA(); } }