java - 我可以使用调度规则来代替同步吗

标签 java eclipse multithreading concurrency

我可以更改我的代码吗:

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/

相关文章:

Java在线程中处理输入流

java - 如何使用maven项目作为后端?

java - 如何修改导丝样式表

java - 404 - 请求的资源不可用

java - 表格行之间的间隙太大

windows - IWebBrowser2 和多线程单元?

Java 停止在输入流读取上阻塞的线程

python - ThreadPoolExecutor 中的 worker 并不是真正的守护进程

java - Android ImageView 不显示图像?

java - 如何通过数组列表中的元素之一查找对象并打印它?