sleep同步

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方法會讓線程處於同步狀態

發佈了64 篇原創文章 · 獲贊 5 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章