java volatile in synchronized block