Java中悲觀鎖的方式有以下幾種:
synchronized關鍵字:使用synchronized關鍵字可以對代碼塊或方法進行加鎖,保證同一時間只有一個線程可以執行該代碼塊或方法。
ReentrantLock類:通過ReentrantLock類和Lock接口可以實現悲觀鎖。可以使用lock()方法獲取鎖,并在使用完后使用unlock()方法釋放鎖。
ReadWriteLock類:通過ReadWriteLock類可以實現悲觀鎖的讀寫分離。讀鎖可以被多個線程同時持有,寫鎖只能被一個線程持有。
Semaphore類:通過Semaphore類可以控制同時訪問某個資源的線程數量。可以通過acquire()方法獲取許可,release()方法釋放許可。
LockSupport類:通過LockSupport類可以阻塞和喚醒線程。可以使用park()方法阻塞線程,unpark()方法喚醒線程。
這些悲觀鎖的方式都可以保證在同一時間只有一個線程可以訪問共享資源,從而解決并發訪問的問題。