* BAEL-6501 Changed the synchronization block to use the DataQueue * BAEL-6501 Fixed the platform agnostic new lines * BAEL-6501 Moved ID increment to a static method * BAEL-6501 Added a logger
Relevant Articles:
- Binary Semaphore vs Reentrant Lock
 - Bad Practices With Synchronization
 - Start Two Threads at the Exact Same Time in Java
 - Volatile Variables and Thread Safety
 - Producer-Consumer Problem With Example in Java
 - Acquire a Lock by a Key in Java
 - Differences Between set() and lazySet() in Java Atomic Variables
 - Volatile vs. Atomic Variables in Java
 - What Is “Locked Ownable Synchronizers” in Thread Dump?
 - Understanding java.lang.Thread.State: WAITING (parking)