public synchronized void synchronizedMethod() {
}
private final Lock lock = new ReentrantLock();
public void lockedMethod() {
lock.lock();
try {
} finally {
lock.unlock();
}
}
private final ReadWriteLock lock = new ReentrantReadWriteLock();
public void readMethod() {
lock.readLock().lock();
try {
} finally {
lock.readLock().unlock();
}
}
public void writeMethod() {
lock.writeLock().lock();
try {
} finally {
lock.writeLock().unlock();
}
}
private final StampedLock lock = new StampedLock();
public void optimisticReadMethod() {
long stamp = lock.tryOptimisticRead();
if (!lock.validate(stamp)) {
stamp = lock.readLock();
try {
} finally {
lock.unlockRead(stamp);
}
}
}
public void writeMethod() {
long stamp = lock.writeLock();
try {
} finally {
lock.unlockWrite(stamp);
}
}