我可以从以下位置更改我的代码:
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替换内部同步)