Synchronized:將該控件添加到需要同步的對象中。Synchronized意味著需要在方法和特定代碼塊中鎖定的對象。
鎖定:需要顯示指定的開始位置和結束位置。壹般使用ReentrantLock類作為鎖,在多線程中必須有壹個ReentrantLock類作為對象,才能保證鎖生效。鎖定和解鎖位置需要通過顯示lock()和unlock()來指示。所以通常在finally塊中編寫unlock()來防止死鎖。
其次,同步和鎖使用的區別
壹般來說synchronized原語和ReentrantLock沒有區別,但是在非常復雜的同步應用程序中,請考慮使用ReentrantLock,尤其是當您滿足以下兩個要求時。
在等待鎖的控制權時,線程需要被中斷。
2.需要在wait-notify和ReentrantLock中分別處理壹些條件應用,線程可以控制notify。
3.有了公平鎖功能,每個進來的線程都會排隊等待。