Java中使用鎖是為了控制多個線程對共享資源的訪問。常用的鎖包括synchronized關鍵字、ReentrantLock類、ReadWriteLock類等。
synchronized關鍵字是Java中最基本的鎖機制之一??梢杂糜谕椒椒ê屯綁K。示例代碼如下:
synchronized void syncMethod() { //要同步的代碼塊 } synchronized (lockObject) { //要同步的代碼塊 }
ReentrantLock類是一個可重入鎖。它與synchronized關鍵字的功能相似,但允許以更靈活的方式使用鎖。示例代碼如下:
ReentrantLock lock = new ReentrantLock(); lock.lock(); try { //要同步的代碼塊 } finally { lock.unlock(); }
ReadWriteLock類是一個讀寫鎖,并提供了讀鎖和寫鎖的機制。它允許多個線程同時讀取共享資源,但只有一個線程能夠寫入共享資源。示例代碼如下:
ReadWriteLock rwl = new ReentrantReadWriteLock(); rwl.readLock().lock(); try { //要同步的讀取代碼塊 } finally { rwl.readLock().unlock(); } rwl.writeLock().lock(); try { //要同步的寫入代碼塊 } finally { rwl.writeLock().unlock(); }