标题中提到了睡眠状态是错的,应该是等待状态,那么两者之间有什么差异呢?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();
}
}
}
}