Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使Java类线程安全_Java_Multithreading_Thread Safety - Fatal编程技术网

使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()设置值由于

我试图理解如何使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()设置值由于上述ThreadBean类不是线程安全的,我应该能够看到不一致的情况。这可能是一个简单的情况,但这只是为了我的理解。请给出建议。感谢

如果不同线程的重叠调用无法使类的任何实例处于无效状态,则类是“线程安全的”,而且重叠调用无法使类的静态数据保持无效状态

您的
ThreadBean
类没有任何静态数据,它只有一个实例变量

ThreadBean
实例的可能状态是什么?哪些州有效,哪些州无效?对任何方法的重叠调用如何使
ThreadBean
处于无效状态?(提示:对
int
变量的赋值保证是原子的。)



如果
ThreadBean
的成员名为
x
y
,并且它们之间存在一些必需的关系,如
x
必须始终小于
y

,您的问题会更有趣。您想使类线程安全还是任何方法?如果你想使任何方法线程安全,你可以使用同步关键字。如果所有的方法都是同步的,那么你的类将是线程安全的。并发和多线程是复杂的并且可能非常困难的主题。你应该阅读有关这方面的教程/书籍,而不是问一些关于这方面的小问题。谢谢。我将查阅文档。