1.boolean标识
static boolean f=true;
@Override
public void run() {
while(f){
//放置线程执行的代码
}
}
//通过这个方法改变boolean标识终止线程
public static void setF(){
f=false;
}
2.使用interrupt()方法
a.阻塞时(阻塞时报错的同时会调用Interrupted方法对interrupt进行一个复位)
public class TestOneOne {
public static void main(String[] args) throws InterruptedException {
ThreadOne t1 = new ThreadOne();
t1.start();
Thread.sleep(10);
t1.interrupt();
}
}
class ThreadOne extends Thread {
@Override
public void run() {
while (!isInterrupted()) { //测试这个线程是否被中断
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
// break; //调用了interrupt()方法直接退出循环
}
for (int i = 0; i < 100; i++) {
System.out.println(i);
}
}
}
}
b.未阻塞时
@Override
public void run() {
while (!isInterrupted()) { //测试这个线程是否被中断
System.out.println("我来测试");
// Thread.currentThread().interrupt();
}
}