suspend(),resume(),stop()等方法已经标记@deprecated,不建议使用
package com.junzerg.threads;
import java.util.concurrent.TimeUnit;
/**
* @author pengjunzhe
*/
public class Shutdown {
public static void main(String[] args) throws InterruptedException {
Runner one = new Runner();
Thread countThread = new Thread(one, "CountThread");
countThread.start();
// 睡眠1秒,main线程对CountThread进行中断
TimeUnit.SECONDS.sleep(1);
countThread.interrupt();
Runner tow = new Runner();
countThread = new Thread(tow, "CountThread");
countThread.start();
// 睡眠1秒,main线程用cancel方法进行结束
TimeUnit.SECONDS.sleep(1);
tow.cancel();
}
private 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 = " + i);
}
public void cancel() {
on = false;
}
}
}
输出结果:
Count i = 479216388
Count i = 483966781
以上两种方法,分别都安全的终止了线程。