コードを次から変更できますか:
class Sample{
private Object _lock=new Object();
public void someMethod(){
synchronized(_lock){
doSomething();
}
}
}
に:
class Sample{
private ISchedulingRule _lock=new SomeSchedulingRule();
public void someMethod(){
try{
Job.getManager().beginRule(_lock);
doSomething();
}finally{
Job.getManager().endRule(_lock);
}
}
}
私は「実際の Java 並行性」を読んでいますが、明示的なロックを使用したい場合は、メモリの可視性を保証する必要があると言われています。
質問は次のとおりです。
メモリの可視性を保証できる場合、下部のコードを使用して上部のコードを置き換えることができますか (組み込みの同期を eclipse IJobManager.beginRule および IJobManager.endRule に置き換えます)