使Java类线程安全
我试图理解如何使Java类线程安全使Java类线程安全,java,multithreading,thread-safety,Java,Multithreading,Thread Safety,我试图理解如何使Java类线程安全 package com.test; public class ThreadBean { private int x; public int getX() { return x; } public void setX(int x) { this.x = x; } } 为了做到这一点,我需要创建另一个生成线程的程序(比如说2个线程),然后两个线程中的每一个都使用setX()设置值由于
package com.test;
public class ThreadBean {
private int x;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
}
为了做到这一点,我需要创建另一个生成线程的程序(比如说2个线程),然后两个线程中的每一个都使用setX()设置值由于上述ThreadBean类不是线程安全的,我应该能够看到不一致的情况。这可能是一个简单的情况,但这只是为了我的理解。请给出建议。感谢如果不同线程的重叠调用无法使类的任何实例处于无效状态,则类是“线程安全的”,而且重叠调用无法使类的静态数据保持无效状态
您的ThreadBean
类没有任何静态数据,它只有一个实例变量
ThreadBean
实例的可能状态是什么?哪些州有效,哪些州无效?对任何方法的重叠调用如何使ThreadBean
处于无效状态?(提示:对int
变量的赋值保证是原子的。)
如果
ThreadBean
的成员名为x
和y
,并且它们之间存在一些必需的关系,如x
必须始终小于y,您的问题会更有趣。您想使类线程安全还是任何方法?如果你想使任何方法线程安全,你可以使用同步关键字。如果所有的方法都是同步的,那么你的类将是线程安全的。并发和多线程是复杂的并且可能非常困难的主题。你应该阅读有关这方面的教程/书籍,而不是问一些关于这方面的小问题。谢谢。我将查阅文档。