Dummy two threads to start with.
Threading the wrong way.
Using ReentrantLock, it "works", still not perfect though.
10. The correct way to use reentrant locks is inside try/finally block, if your function (i.e. increment() here) throws an exception the lock will never be unlocked, finally keyword guarantees the code will always run.