Explain Java volatile semantics | PayPal