Java中多線程加鎖的方法有以下幾種:
synchronized關鍵字:通過在方法前面或代碼塊前面加上synchronized關鍵字來實現加鎖。synchronized關鍵字可以修飾方法和代碼塊,當某個線程進入synchronized修飾的方法或代碼塊時,會自動獲取該方法或代碼塊所在對象的鎖,其他線程需要等待鎖釋放才能進入。
ReentrantLock類:ReentrantLock類是Java提供的一個可重入鎖,通過創建ReentrantLock對象來使用。可以通過lock()方法獲取鎖,通過unlock()方法釋放鎖。與synchronized不同的是,ReentrantLock類提供了更多的功能,如可以獲取鎖的公平性、可中斷的獲取鎖等。
Lock接口的實現類:除了ReentrantLock類,Java還提供了其他實現了Lock接口的類,如ReadWriteLock、StampedLock等,這些類都提供了更多的鎖機制,以滿足不同的需求。
synchronized關鍵字和Lock接口的組合使用:有時候需要在某個方法或代碼塊中加鎖,但又不希望該方法或代碼塊鎖住太長時間,可以使用Lock接口的tryLock()方法來嘗試獲取鎖,如果獲取成功則執行相應的代碼,獲取失敗則執行其他邏輯。
以上是Java中多線程加鎖的常用方法,根據不同的需求選擇合適的方法來實現線程安全。