package examples; import java.util.Stack; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; @ThreadSafe public class SyncStackExample { private Lock lock = new ReentrantLock(); private Stack stc = new Stack(); public void push(T item) { lock.lock(); stc.push(item); lock.unlock(); } public void pop() { lock.lock(); stc.pop(); lock.unlock(); } } @ThreadSafe class FaultySyncStackExample { private Lock lock = new ReentrantLock(); private Stack stc = new Stack(); public void push(T item) { lock.lock(); stc.push(item); lock.unlock(); } public void pop() { stc.pop(); // $ Alert } }