volatileがなくて最適化でメモリアクセスがどっかに消えているとか。
同期はメモリを直接参照するのではなく、ちゃんと同期オブジェクト使わんと遺憾よ。