java - java中默认可以并发执行实例方法吗?

标签 java concurrency synchronized

我知道 synchronized 关键字,但我想确保我有一个清晰的理解。

因此,如果我不使用 synchronized 关键字,一个实例变量可能会被两个线程覆盖,但如果我使用 synchronized 关键字,则一次只能有一个线程进入该方法。对吧?

最佳答案

如果两个线程进入一个非同步的方法并更新一些共享状态,那么它会导致不一致。

public synchronized void method(){ 
      //only one thread will be able to enter (IF SAME INSTANCE)
}

但它也建立了一个发生在的关系。这是多线程的可见性部分。

Two actions can be ordered by a happens-before relationship. If one action happens-before another, then the first is visible to and ordered before the second.

Happens-before JLS.

关于java - java中默认可以并发执行实例方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14534701/

相关文章:

java - 为什么 Spring @Configuration 类继承没有按预期工作?

java :~是什么意思

go - 何时以Worker Pool并发模式关闭结果 channel ?

java - 为什么多线程 Java 程序在 'super' Linux 服务器上没有比笔记本电脑 Win7 更快?

java - 指定超时后同步方法释放

java - "org.xmlpull.v1.XmlPullParserException: expected: START_TAG"错误

java - 我们如何拦截单击搜索 View 时打开的左上箭头图像

c# - worker 线程可以在GUI中读取控件吗?

java - 为什么这个同步方法没有按预期工作?

Java volatile 修饰符和同步块(synchronized block)