import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class Example { Lock lock = new ReentrantLock(); public void shareResource() { lock.lock(); try { // access shared resource here } finally { lock.unlock(); } } }
import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; public class Example { ReadWriteLock lock = new ReentrantReadWriteLock(); Object sharedResource; public void readResource() { lock.readLock().lock(); try { // read shared resource here } finally { lock.readLock().unlock(); } } public void writeResource() { lock.writeLock().lock(); try { // write to shared resource here } finally { lock.writeLock().unlock(); } } }These examples are part of the Java Standard Library (Java SE Library), specifically the java.util.concurrent package.