package com.mozq.thread.interrupt;
/**
* 结束线程方法1:使用结束标志,但是当线程处于阻塞状态时,如果线程不退出阻塞状态,则无法检测退出标志,也就不能退出。
* @author jie
*
*/
class StopThread implements Runnable{
private boolean exit = false;
public void setExit(boolean exit) {
this.exit = exit;
}
@Override
public synchronized void run() {
while(!exit) {
//如果线程处于被阻塞状态,不退出阻塞状态,就无法检测退出标志,则无法通过退出标志退出。
/*
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
*/
System.out.println(Thread.currentThread().getName() + "run...");
}
System.out.println(Thread.currentThread().getName() + "结束了...");
}
}
public class MyInterrupt2 {
public static void main(String[] args) {
StopThread stopThread = new StopThread();
Thread t = new Thread(stopThread);
t.start();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
//业务逻辑。。。
//此处想结束线程
stopThread.setExit(true);
}
}