I am trying to convince myself that actions taken in the finally clause happen before the function return (in the memory consistency sense). From the J
If you are using only one thread, you should see "take+, fetch+, fetch-, take-". In your example, it's multi-threaded, so you are not sure what happens first.