繁体   English   中英

为什么在Java中将synced关键字称为“ synchronized”而不是更精确的“ mutexed”?

[英]Why is the synchronized keyword in Java called 'synchronized' instead of the more precise 'mutexed'?

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

[编辑]

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

这不是错误。 意思是说的。 该代码必须与其他线程同步以提供互斥。 而且,实际上,术语“同步”可能比“互斥体”更有意义,因为“互斥体”表示一种非常特殊的同步原语类型,并且可以使用任意数量的线程同步原语(带有主动轮询的test&set,信号灯等)。

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

本身使用同步并不是一个错误,但是它可能是与多线程一起使用的底层构造,并且不当使用会很快导致多线程错误。

实际上,使用synced关键字而不是互斥量是表达该术语的一种好方法。 通过互斥量我们还不太清楚,但是synced关键字本身可以说明其自身。 同步放置在实际上需要在所有线程都不想访问的线程之间进行同步的代码处。 这就是为什么它被称为同步。

暂无
暂无

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

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