Java 線程同步筆記

1. wait()與notify()/notifyAll()
調用sleep()和yield()的時候鎖並沒有被釋放,而調用wait()將釋放鎖。這樣另一個任務(線程)可以獲得當前對象的鎖,從而進入它的synchronized方法中。可以通過notify()/notifyAll(),或者時間到期,從wait()中恢復執行。
只能在同步控制方法或同步塊中調用wait()、notify()和notifyAll()。如果在非同步的方法裏調用這些方法,在運行時會拋出IllegalMonitorStateException異常。

2.synchronized
public synchronized void test(int x) { } synchronized(this)效果是一樣的。

多個線程一定要鎖住的是同一個對象,方可實現同步。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章