Concurrent programming in Java : design principles and patterns - LEA (The Java series, 2000)