import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; class MyTask implements Runnable { Lock lock = new ReentrantLock(); private final int MAX_COUNT = 100000; private int sharedCounter = 0; @Override public void run() { System.out.println("Starting! Shared counter: " + sharedCounter); for (int i = 0; i < MAX_COUNT; i++) { lock.lock(); try { sharedCounter++; } finally { lock.unlock(); } } System.out.println("Finished! Shared counter: " + sharedCounter); } }