Thanks for documenting this. It looks like an interesting area :).
My conclusions in principle are that we don´t provide real thread-safety to avoid performance issues and potential deadlocks. We simply provide some basic synchronization mechanisms on lists and ensure that no CME arise when there are several threads dealing with the same object.
I have a couple of thoughts:
- For static/shared data is clear that we have to take care on this thread-safety basic considerations.
- For everything else (for instance the Preference class we were discussing) how far should we take this thread-safety questions ?. With every single class ?. Should we start to design and plan our solutions considering if they should or should have some basic thread-safety concerns.
- Would you know the bugzilla related to those non thread-safety EAnnotations by a chance ?. I think I could learn more looking at it.