繁体   English   中英

Java并发中的同步块/方法和调度规则

[英]synchronized block/method and scheduling rules in java concurrency

我正在研究同步块和调度规则。 我知道这两种方法都用于保证同步数据。 但是我不了解它们,它们如何工作。 同步和调度规则的优缺点是什么? 我在此处引用了有关调度规则的说明: 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;
      }    }

然后,将规则设置为对象或方法以控制作业。 在这段代码中,我看不到规则以及如何检查规则。 以及何时使用调度规则或同步?

预先感谢

当线程需要访问相同的数据时,将使用调度和同步。 如果一个线程读取数据,对其进行突变并且在它可以写回数据之前,另一个线程读取数据,这将是一个主要问题。

需要仔细注意此横截面,以确保一次只能有一个进程可以访问共享资源。 同步一次仅允许一个进程利用资源(以更高级的方式,如果倾向,则同步可以允许预定数量的多次访问;即信号量)

该调度表用于解决线程可以访问(定时)共享资源的顺序。

如果一个线程无法访问另一个线程可以访问的资源,则没有理由担心同步,因为它是唯一使用该资源的线程。

特定于您的代码段,它创建了一个互斥锁(明确指出),该互斥锁仅允许一个进程访问资源-上面的注释将其称为二进制信号量,并且对于所有意图和目的,它的工作方式就像一个。 但是,Java在其预定义的互斥锁中使用监视器。 不是信号量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM