volatile java vs c