package com.freeflying.thread.communication;
/**
* wait方法是否锁
* @ClassName: WaitReleaseLock
* @Description:
* @author freeflying
* @date 2018年7月16日
*/
public class WaitReleaseLock {
public static void main(String[] args) {
Object lock=new Object();
WaitReleaseLockA waitReleaseLockA=new WaitReleaseLockA(lock);
waitReleaseLockA.start();
WaitReleaseLockB waitReleaseLockB=new WaitReleaseLockB(lock);
waitReleaseLockB.start();
}
}
class WaitReleaseLockEx{
public void testMethod(Object lock) {
try {
synchronized (lock) {
System.out.println("begin wait!!");
lock.wait();
System.out.println("end wait!!");
}
} catch (Exception e) {
}
}
}
class WaitReleaseLockA extends Thread{
private Object lock;
public WaitReleaseLockA(Object lock) {
this.lock=lock;
}
@Override
public void run() {
WaitReleaseLockEx waitReleaseLockEx=new WaitReleaseLockEx();
waitReleaseLockEx.testMethod(lock);
}
}
class WaitReleaseLockB extends Thread{
private Object lock;
public WaitReleaseLockB(Object lock) {
this.lock=lock;
}
@Override
public void run() {
WaitReleaseLockEx waitReleaseLockEx=new WaitReleaseLockEx();
waitReleaseLockEx.testMethod(lock);
}
}
结果:
begin wait!!
begin wait!!
结论:在wait方法执行后,线程会释放锁的