I'm currently learning about the Java Memory Model and I came about the different kinds of Actions.
There are two of them which I don't fully understand:
- External Actions and
- Thread divergence actions
Please explain those two action types and give examples for them and for their special properties regarding compiler-reordering and happens-before relation. Oh, and are native calls also external actions?
I think they wouldn't define thread divergence actions if there was nothing special about them. So what makes them special so that they need to be defined as a special kind of action?