我一直在努力学习设计模式。 这个网站 使用了 synchronized
关键字,但是我不明白它的作用。
我在网上搜索发现,它与多线程和内存有关,但我是机械工程师,不理解这是什么意思。
请问,有没有人可以帮助我理解线程和 synchronized
关键字呢?
我一直在努力学习设计模式。 这个网站 使用了 synchronized
关键字,但是我不明白它的作用。
我在网上搜索发现,它与多线程和内存有关,但我是机械工程师,不理解这是什么意思。
请问,有没有人可以帮助我理解线程和 synchronized
关键字呢?
C++中没有synchronized
关键字。
然而在Java中有一个,对于方法它有以下两个含义:
- 同一个对象上的两个同步方法调用不能交错。当一个线程为一个对象执行同步方法时,所有其他调用该对象的同步方法的线程将被阻塞(挂起执行),直到第一个线程完成该对象。
- 当同步方法退出时,它会自动与后续调用同一个对象的同步方法建立happens-before关系。这保证了对对象状态的更改将对所有线程可见。
另外,我建议从经过同行评审的书籍中学习,而不是从任意的非权威网站上学习。
在这个(Java)示例中
public static synchronized Singleton getInstance()
这意味着一次只能有一个线程访问getInstance()方法,以避免竞态条件。
正如评论者已经指出的那样,synchronized 是 Java 关键字。
它意味着两个线程不能同时执行该方法,而 JVM 负责实施。
在 C++ 中,您将需要使用一些同步构造,如关键部分或互斥量。您可以查阅这里。
synchronized
是 Java 特定的关键字。 - Prince John Wesley