Ok -- I have some comments prepared, so I'll wrap it up with that. However, I am curious about suggested approaches for tests to ensure that methods are synchronizing properly ( as I mentioned in my message below ).

Thanks,
   Jim

On 10/02/2012 05:07 AM, Alan Bateman wrote:
On 01/10/2012 22:22, Jim Gish wrote:
Alan & Chris,

I agree with you that the new approach is less clear than the previous approach, but the original approach suffered from code duplication which was the motivation for the change. However, let me propose something else. How about /all /the methods in StringBuffer be synchronized? Although this is not strictly necessary, it works because reentrant synchronization is allowed. This eliminates the original problem with code duplication with the dispatch during the narrowing of types being done in both StringBuilder and StringBuffer, and also eliminates the confusion about where synchronization is being done and having to test for it.

I can still add a test to ensure that all methods of StringBuffer are synchronized, but that now becomes far easier - I simply can use reflection on each method and test for isSynchronized(). Having to do invocation tests to check for blocking or not seems much harder (unless you have a trick in your bag that I don't yet know).

Sound reasonable?
As Martin said, it's not free.

I think a comment (along the lines of the comments that you removed) would be sufficient to make it clear where the synchronization is done. Alternatively we just close this issue as it's not worth spending a lot of time on it.

-Alan.



--
Jim Gish | Consulting Member of Technical Staff | +1.781.442.0304
Oracle Java Platform Group | Core Libraries Team
35 Network Drive
Burlington, MA 01803
jim.g...@oracle.com

Reply via email to