volatile synchronized java example