package com.freeflying.thread.communication;
/**
* sleep方法同步
* @ClassName: WaitReleaseLock
* @Description:
* @author freeflying
* @date 2018年7月16日
*/
public class SleepReleaseLock {
public static void main(String[] args) {
Object lock=new Object();
SleepReleaseLockA sleepReleaseLockA=new SleepReleaseLockA(lock);
sleepReleaseLockA.start();
SleepReleaseLockB sleepReleaseLockB=new SleepReleaseLockB(lock);
sleepReleaseLockB.start();
}
}
class SleepReleaseLockEx{
public void testMethod(Object lock) {
try {
synchronized (lock) {
System.out.println("begin wait!!");
Thread.sleep(10000);
System.out.println("end wait!!");
}
} catch (Exception e) {
}
}
}
class SleepReleaseLockA extends Thread{
private Object lock;
public SleepReleaseLockA(Object lock) {
this.lock=lock;
}
@Override
public void run() {
SleepReleaseLockEx sleepReleaseLockEx=new SleepReleaseLockEx();
sleepReleaseLockEx.testMethod(lock);
}
}
class SleepReleaseLockB extends Thread{
private Object lock;
public SleepReleaseLockB(Object lock) {
this.lock=lock;
}
@Override
public void run() {
SleepReleaseLockEx sleepReleaseLockEx=new SleepReleaseLockEx();
sleepReleaseLockEx.testMethod(lock);
}
}
结果:
begin wait!!
end wait!!
begin wait!!
end wait!!
结论:sleep方法会让线程处于同步状态