线程进入运行状态之后,可以根据条件触发转为“等待阻塞”:
运行的线程执行wait()方法,该线程会释放占用的所有资源,JVM会把该线程放入“等待池”中。进入这个状态后,是不能自动唤醒的,必须依靠其他线程调用notify()或notifyAll()方法才能被唤醒,
如下代码:
1、定义两个测试线程类
public class WaitTest1 extends Thread {
private Object look;
public WaitTest1(Object look) {
this.look = look;
}
@Override
public void run() {
try {
synchronized (look) {
System.out.println("wait start...");
look.wait();
System.out.println("wait end...");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
public class WaitTest2 extends Thread {
private Object look;
public WaitTest2(Object look) {
this.look = look;
}
@Override
public void run() {
try {
synchronized (look) {
System.out.println("notify start...");
look.notify();
System.out.println("notify end...");
}
} catch (Exception e) {