Java中的“同步”是啥意思? [复制]
Posted
技术标签:
【中文标题】Java中的“同步”是啥意思? [复制]【英文标题】:What does "synchronized" mean in Java? [duplicate]Java中的“同步”是什么意思? [复制] 【发布时间】:2011-12-12 12:06:50 【问题描述】:我一直在努力学习设计模式。 This site 使用 synchronized
关键字,但我不明白它的作用。
我在网上搜索了一下,发现和多线程和内存有点关系,但是我是机械工程师,不明白是什么意思。
谁能帮我理解线程和synchronized
关键字?
【问题讨论】:
synchronized
是 java 特定的关键字。
链接中的代码不是C++。
第一点是您链接到的代码示例是 Java 而不是 C++。
【参考方案1】:
正如评论者已经指出的那样,同步是一个 Java 关键字。
这意味着两个线程不能同时执行该方法,由 JVM 负责强制执行。
在 C++ 中,您将不得不使用一些同步结构,例如临界区或互斥体。可以咨询this。
【讨论】:
【参考方案2】:在 (Java) 示例中
public static synchronized Singleton getInstance()
意味着一次只有一个线程应该能够访问 getInstance() 方法,以避免出现竞争情况。
【讨论】:
【参考方案3】:C++ 中没有synchronized
关键字。
不过,Java 中有一个方法,it means the following two things:
不可能对同一对象的同步方法的两次调用交错。当一个线程正在为一个对象执行同步方法时,所有其他为同一对象调用同步方法的线程都会阻塞(暂停执行),直到第一个线程处理完该对象。 当一个同步方法退出时,它会自动建立一个happens-before 关系,随后调用同一对象的同步方法。这保证了对象状态的更改对所有线程都是可见的。
Similar rules apply to arbitrary blocks.
另外,我建议从同行评议的书籍中学习,而不是一些随意的非权威网站。
【讨论】:
以上是关于Java中的“同步”是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Python 中的 @ 和 lambda 是啥意思? [复制]
SetParent 的文档中的“同步 UIState”是啥意思?