java并发中eclipse同步块/方法和调度规则
我正在研究同步块和调度规则。我知道这两种方法都用于保证同步数据。但我不理解它们,它们是如何工作的。同步和调度规则的优点和缺点是什么? 我在这里引用了有关调度规则的说明:http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fruntime_jobs_rules.htm 在本文件中,它代表了以下规则:
We can fix this example by creating a simple scheduling rule that acts as a mutex (also known as a binary semaphore):
class Mutex implements ISchedulingRule {
public boolean isConflicting(ISchedulingRule rule) {
return rule == this;
}
public boolean contains(ISchedulingRule rule) {
return rule == this;
} }
然后,将规则设置为对象或方法以控制作业。 在这段代码中,我看不到规则以及如何检查规则。 何时使用调度规则或同步
提前感谢
# 1 楼答案
当线程需要访问相同的数据时,使用调度和同步。如果一个线程读取数据并对其进行变异,而在将数据写回之前,另一个线程读取数据,这将是一个主要问题
需要仔细注意此横截面,以确保一次只有一个进程可以访问共享资源。同步一次只允许一个进程利用资源(以一种更高级的方式,同步可以允许预先确定的多次访问次数(如果愿意的话);即信号量)
调度用于确定线程可以访问(定时)共享资源的顺序
如果一个线程不能访问另一个线程可能访问的资源,那么就没有理由担心同步问题,因为它是唯一使用该资源的线程
特定于您的代码片段,它创建了一个互斥体(它清楚地说明了这一点),该互斥体只允许一个进程访问资源——上面的注释将其称为二进制信号量,并且出于所有目的,它的工作方式与一个进程类似。但是,java在预定义的互斥锁中使用监视器;不是信号灯