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 ).
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.gish at oracle.com
More information about the core-libs-dev
mailing list