Despite my various attempts to learn Threads and Synchronization, I have not been able to do so. Many books just teach syntax but I think proper synchronization is more than syntax. Secondly books just take you to few hundreds line of code whereas real synchronization problems appears in big projects with thousands of lines of code. My questions are :
1. What are open source projects which can be used to learn best practices of synchronization but at the same time manageable for learning (not too large).
2. In which kind of projects synchronization is most used, for example in web-projects most of synchronization is provided by container.