10

我听说在 Java 中选择使用“同步”这个词来描述互斥语句只是一个错误(编辑:“错误”在这里是一个错误的选择。请参阅编辑),但我想知道是否有实际上是选择背后的原因。

[编辑]

在 Safyan 的评论的推动下,我想补充一点,同步是建立线程之间时序关系的通用术语。它可以包括互斥和速率控制之类的东西(例如,两个线程以相同的速率做某事)。使用“同步”来表示互斥而不是更具体的关键字(如“互斥”)似乎不必要地模棱两可。

4

3 回答 3

7

这不是一个错误。它意味着它所说的;代码必须与其他线程同步以提供互斥。而且,事实上,术语同步可能比“互斥锁”更有意义,因为“互斥锁”意味着一种非常特殊的同步原语类型,并且可以使用任意数量的线程同步原语来实现同步关键字(带有主动轮询的测试和设置,信号量等)。

于 2010-04-27T04:02:03.173 回答
0

synchronized 关键字用于获取和释放 Monitor 上的锁。与互斥体一样,监视器用于并发控制,但它们并不相同。

使用 synchronized 本身并不是一个错误,但它可能是与多线程一起使用的低级构造,不恰当的使用会很快导致多线程错误。

于 2010-04-27T04:04:35.317 回答
0

使用 synchronized 关键字代替 mutex 实际上是表达该术语的好方法。通过 mutex,我们不是很清楚,但是 synchronized 关键字本身就说明了它自己。Synchronized 被放置在实际上需要在所有想要访问该代码的线程之间同步的代码处。这就是为什么它被称为同步。

于 2010-04-27T05:44:52.847 回答