A Declarative Approach to Concurrency in Java