title: patterns for synchronizing collections between threads
body: <p>I am developing a multithreaded application where multiple threads are manipulating collections of items (List type). The actions being performed include adding, removing items, looping through items and performing calculations. I am currently using locking for synchronization, but with multiple shared collections and threads it is getting a bit complex. What patterns would you suggest to effectively share data between the threads, avoid race conditions and make the code easier to maintain?</p>