java - Java-同一对象,不同变量,多个线程

标签 java multithreading race-condition

我在写一些代码

class A {
    Integer x;
    String y
}

我创建了一个A对象,并将其传递给2个可运行线程。第一个线程更新值x,而第二个线程更新值y。

有什么情况可以打破这种情况吗?我的意思是,如果有两个线程更新同一对象的不同变量,是否会出现争用情况?

最佳答案

不,可以正常工作。只要任何给定变量仅由一个线程更新(在某些条件下其他线程读取该变量),您就可以。

根据您的工作,它可能不是最容易理解的设计-而且,正如我上文提到的那样,如果您希望查看原子对象或volatile,也不要指望从另一个线程可靠地读取这些变量。 (对于从多个线程进行写入,原子性将更快,如果仅从一个线程进行写入而从其他线程中进行读取,则volatile可能会更好)

关于java - Java-同一对象,不同变量,多个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45642510/

相关文章:

java - AWS DAX java身份验证问题

.net - 如何避免进程终止通知和标准输出重定向事件之间的竞争条件?

java - android-为什么我无法获取设备方向?

java - JTextField 和 JLabel 未出现

multithreading - +[NSThread detachNewThreadSelector :toTarget:withObject:] and -[NSObject performSelectorInBackground:withObject:]? 和有什么区别

c# - 避免在 WPF 应用程序中挂起 UI

android - Android 的 runOnUiThread() 方法

c# - parallel.foreach 有效,但为什么呢?

javascript - 如何处理竞争条件

java - 同步方法中的同步块(synchronized block)