[concurrency-interest] BigDecimal Safe Publication

Sergey Kuksenko skuksenko at gmail.com
Mon Aug 20 08:05:08 EDT 2012


Publishing via data race would be a problem with a lot classes. Just Don't
do it. :)

On Mon, Aug 20, 2012 at 3:45 PM, Vitaly Davidovich <vitalyd at gmail.com>wrote:

> I think James was talking about publishing via data race, in which case it
> would indeed be a problem with that version.
>
> Sent from my phone
> On Aug 20, 2012 7:41 AM, "Sergey Kuksenko" <skuksenko at gmail.com> wrote:
>
>> Hi James,
>>
>> - Look into jdk8 sources. New  BigDecimal has final fields (instead of
>> volatile).
>> - Could you explain what is the issue for safe publication in the old
>> code (look like everything is ok)?
>>
>> On Mon, Aug 20, 2012 at 2:58 PM, James <james at inaseq.com> wrote:
>>
>>> I'm wondering whether the BigDecimal constructors that take a
>>> MathContext parameter exhibit initialization safety.  As far as I can tell
>>> (and I could be very wrong), BigDecimal is relying on the volatile nature
>>> of the intVal reference to ensure the BigDecimal is effectively immutable.
>>>  However, the constructors that take a MathContext delegate to the
>>> following method, which alters other members after intVal:
>>>
>>>     private void roundThis(MathContext mc) {
>>>         BigDecimal rounded = doRound(this, mc);
>>>         if (rounded == this)                 // wasn't rounded
>>>             return;
>>>         this.intVal     = rounded.intVal;
>>>         this.intCompact = rounded.intCompact;
>>>         this.scale      = rounded.scale;
>>>         this.precision  = rounded.precision;
>>>     }
>>>
>>> Is this a potential issue for safe publication or am I missing something?
>>> Is BigDecimal intended to exhibit initialization safety?
>>> _______________________________________________
>>> Concurrency-interest mailing list
>>> Concurrency-interest at cs.oswego.edu
>>> http://cs.oswego.edu/mailman/listinfo/concurrency-interest
>>>
>>
>>
>>
>> --
>> Best regards,
>> Sergey Kuksenko
>>
>> _______________________________________________
>> Concurrency-interest mailing list
>> Concurrency-interest at cs.oswego.edu
>> http://cs.oswego.edu/mailman/listinfo/concurrency-interest
>>
>>


-- 
Best regards,
Sergey Kuksenko
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cs.oswego.edu/pipermail/concurrency-interest/attachments/20120820/10e8a0a3/attachment.html>


More information about the Concurrency-interest mailing list