コードのどこかに空のsynchronized
ブロックを書いたとします。
synchronized(obj){
//No code here
}
同期されたブロックにはコードが含まれていないため、JIT コンパイラはobj
それをロックしないことで最適化しますか?
Java コンパイラはロックの粗化などの同様のトリックを行いますが、この同期ブロックも最適化されますか?
編集:
assylias の指摘によると、
synchronized(new Object()){
//empty block
}
メソッドをエスケープしないオブジェクトを使用しているため、JIT コンパイラはこれを最適化できるようになりますか?