Java 教学:线程关闭三种情况
java 线程关闭,总的来说有 3 种:
①使用状态位,这个简单,就不多说了:
public class Task extends Thread {
private volatile boolean flag= true;
public void stopTask() {
flag = false;
}
@Override
public void run() {
while(flag){
/* do your no-block task */
}
}
}
②当线程等待某些事件发生而被阻塞,又会发生什么 ?当然,如果线程被阻塞,它
便不能核查共享变量,也就不能停止。这在许多情况下会发生,例如调用 Object.wait()、
Thread.sleep 等,这里仅举出一些。他们都可能永久的阻塞线程。即使发生超时,在超时
期满之前持续等待也是不可行和不适当的,所以,要使用某种机制使得线程更早地退出
被阻塞的状态。这个时候你可以使用 Thread.interrupt();
public class BlockTask extends Thread{
@Override
public void run(){
try {
while (!Thread.interrupted()){
/* do your block task*/
}
} catch (Exception e) {