package thread;
public class WaitAndNotify {
public void testWait(Object lock){
try{
synchronized(lock){
System.out.println("start wait........");
lock.wait();
System.out.println("end wait........");
}
}catch (Exception e){
e.printStackTrace();
}
}
public void testNotify(Object lock){
try{
synchronized(lock){
System.out.println("start Notify........");
lock.notify();
System.out.println("end Notify........");
}
}catch (Exception e){
e.printStackTrace();
}
}
public static void main(String[] args)throws Exception {
Object lock = "";
WaitAndNotify test = new WaitAndNotify();
new Thread(new Runnable() {
@Override
public void run() {
test.testWait(lock);
}
}).start();
new Thread().sleep(2000);
new Thread(new Runnable() {
@Override
public void run() {
test.testNotify(lock);
}
}).start();
}
}
结果
start wait........
start Notify........
end Notify........
end wait........
wait等到,释放锁,notify唤醒线程,notifyAll唤醒所有线程