结束线程方法1:使用退出标志

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);
    }
}

 

posted @ 2019-02-21 16:46  没有理由不会呀  阅读(843)  评论(0编辑  收藏  举报