RFR: 6206780 (str) Forwarding append methods in String{Buffer, Builder} are inconsistent

Jim Gish jim.gish at oracle.com
Tue Oct 2 13:33:48 UTC 2012

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 ).


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.gish at oracle.com

More information about the core-libs-dev mailing list