1.synchronized 用在方法和代碼塊的區別?
a. 可以只對需要同步的使用
b.與wait(),notify()和notifyall()方法使用比較方便
2.wait()
a。釋放持有的對象鎖,線程進入等待池,釋放cpu,其他正在等待的線程可以獲得鎖,而sleep方法,線程會休眠一段時間,線程不會釋放鎖。
3.ReentrantLock
還包括了中斷鎖等待和定時鎖等待,
在並發量小的時候,用synchronize是比較好的選擇,並發量大的時候用Lock。
synchronize是自動釋放鎖,Lock是主動釋放鎖
Lock可以設定所等待的時間,
有些操作不會發生沖突現象,需要用Lock解決,比如同時讀文件。
