Hacker News new | past | comments | ask | show | jobs | submit login

Okay, it looks like those were added in Java 9, which was after I stopped following Java (and well after the C++ memory model was largely settled, in 2007).



Before Java 9 it could have been done using Unsafe. VarHandle just provides a slightly higher level construct.


Was the behavior of more relaxed operations fully formalized in the way it fits with the rest of the memory model?


Not with the Unsafe class. It was never intended to be used by anything except the built-in concurrency support classes, and it was just barely good enough. External libraries which made use of the Unsafe class did so by studying how it was used, and then assumed/concluded how it worked. Java 9 formalized everything with the VarHandle class, and it offers much more features than the Unsafe class.


Thanks for the clarification. Java was obviously a trailblazer on formally introducing advanced memory models on practical languages, but it did take a few tries to get it correct.


Okay, it seems strange to make a sweeping generalization while assuming java had stagnated.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: