wait通知,释放锁。
notify不释放锁。
MyThread1等待通知。MyThread2发通知。
package waitNotice;
public class MyThread1 extends Thread{
private Object lock;
public MyThread1(Object lock){
super();
this.lock=lock;
}
@Override
public void run(){
try{
synchronized(lock){
System.out.println("开始 wait time="+System.currentTimeMillis());
lock.wait(); //wait释放锁
System.out.println("结束 wait time="+System.currentTimeMillis());
}
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
MyThread2.java
package waitNotice;
public class MyThread2 extends Thread{
private Object lock;
public MyThread2(Object lock){
super();
this.lock=lock;
}
@Override
public void run(){
try{
synchronized(lock){
System.out.println("开始 notify time="+System.currentTimeMillis());
lock.notify(); //notify不释放锁
System.out.println("结束 notify time="+System.currentTimeMillis());
}
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
运行主类:
package waitNotice;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
Object lock=new Object();
MyThread1 t1=new MyThread1(lock);
t1.start();
Thread.sleep(3000);
MyThread2 t2=new MyThread2(lock);
t2.start();
}catch(Exception e){
e.printStackTrace();
}
}
}