[concurrency-interest] BigDecimal Safe Publication

Vitaly Davidovich vitalyd at gmail.com
Mon Aug 20 07:45:24 EDT 2012


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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cs.oswego.edu/pipermail/concurrency-interest/attachments/20120820/a51f1e70/attachment.html>


More information about the Concurrency-interest mailing list