我可以更改我的代码吗:
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替换内部同步)
最佳答案
假设我找到了源代码here是最新的,您可以检查 beginRule
方法是否调用 implicitJob.begin
,其中有一个大的 synchronized(this)
block 。
关于java - 我可以使用调度规则来代替同步吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12410066/