Unsafe: removing the monitorEnter/monitorExit/tryMonitorEnter methods
David M. Lloyd
david.lloyd at redhat.com
Thu Feb 27 14:24:36 UTC 2014
This is actually a somewhat unfortunate "feature". Had this not been in
place, I could have just used custom bytecodes to perform the lock magic
that I ended up using Unsafe for (I'm the guy that wrote JBoss Modules,
i.e. apparently the one usage "in the wild" of these methods).
The restriction is kind of pointless anyway as it's not really "unsafe",
it just can lead to buggy code. And given that the only way to utilize
those two particular codes (monitorenter/monitorexit) from Java is via
"synchronized", which is necessarily balanced, the restriction seems to
impose needless limitation.
On 02/27/2014 07:56 AM, Vitaly Davidovich wrote:
> Right, there's no such guarantee/requirement. JVMS mentions that
> implementations are permitted to enforce balance (called structured locking
> there) but not required:
> http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.11.10
>
> Thanks
>
> Sent from my phone
> On Feb 27, 2014 8:40 AM, "Jeroen Frijters" <jeroen at sumatra.nl> wrote:
>
>> David Holmes wrote:
>>> I don't think this is workable. Exposing a monitor as Lock would allow
>>> you to break the guarantees/requirements involving balanced-locking for
>>> monitors.
>>
>> Where are these guarantees/requirements documented?
>>
>> Regards,
>> Jeroen
>>
>>
--
- DML
More information about the core-libs-dev
mailing list