Biased locking Obsoletion

dean.long at oracle.com dean.long at oracle.com
Fri Oct 21 00:22:58 UTC 2022


Does wrapping the while loop with

synchronized (newContent) {

synchronized (oldContent) {

...

}

}

allow lock coarsening to work in this case?

dl

On 10/20/22 6:00 AM, Andrew Dinn wrote:
> On 20/10/2022 13:01, Alan Bateman wrote:
>> A general point is that you are more likely to see this with the 
>> java.io APIs because they date from early JDK releases where they was 
>> a tenancy to synchronize everything. The synchronization is not 
>> specified and for most of these classes it just doesn't make sense to 
>> have several threads reading from a stream. However, there is 25+ 
>> years of usage, and there is concurrency if there is async close, so 
>> it would not be easy to just remove it. The DataOutputStream change 
>> that you linked to was okay because the class wasn't thread safe 
>> already and part of the change was to add a disclaimer on thread 
>> safety to the javadoc.
>
> Yes, I realise this is a very unfortunate legacy issue and advised our 
> customer of that.
>
>> I don't know know which JDK release was used for the test but BIS 
>> changed in JDK 19 to use j.u.concurrent locks when a BIS is 
>> constructed directly. It may be that it could be changed further to 
>> use a stamped lock but it would it would requires exclusive access. 
>> Just mentioning this because I think lock coarsening is monitors only 
>> (BIS does use monitors when subclassing as existing code may assume 
>> synchronization in the super class).
> Yes, understood -- indeed, Aleksey Shipilev just explained that to me 
> in a separate, off-list email exchange. I also just noticed that the 
> cited example is tricky to handle even on a JVM that precedes the 
> switch to j.u.c locks because execution involves repeated, alternate 
> synchronization on two different BIS instances.
>
> regards,
>
>
> Andrew Dinn
> -----------
> Red Hat Distinguished Engineer
> Red Hat UK Ltd
> Registered in England and Wales under Company Registration No. 03798903
> Directors: Michael Cunningham, Michael ("Mike") O'Neill
>


More information about the hotspot-dev mailing list