interrupt清除线程的睡眠状态

标题中提到了睡眠状态是错的,应该是等待状态,那么两者之间有什么差异呢?sleep需要定义时间,wait可以定义也可以不定义,并且它需要写在同步代码块里 因为它需要对象调用。interrupt就是清除线程等待状态的方法。

class Xian extends Thread {
    boolean b = false;

    public void run() {
        while (true) {
            synchronized (this) {
                System.out.println(Thread.currentThread().getName() + "======");
                try {
                    this.wait();
                } catch (Exception e) {
                }
                if (b) {
                    break;
                }
            }
        }
    }
}
class Demo1{
    public static void main(String[] args) {
        Xian x=new Xian();
        Xian x1=new Xian();
        Xian x2=new Xian();
        x.run();
        x1.run();
        x2.run();
        for(int i=0;i<50;i++){
            System.out.println(Thread.currentThread().getName() + "======"+i);
            if(i==20){
                x.b=true;
                x.interrupt();
            }
        }
    }
}

你可能感兴趣的:(interrupt清除线程的睡眠状态)