`synchronized` vs `ReentrantLock` - when would you choose one? | LetsGit.IT