Concurrent Programming in Java: Design Principles and Patterns (Java Series)