background image

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) {