Concurrency Patterns and Best Practices