java - java - 当类在java中没有单例构造函数时如何处理实例变量线程安全问题
问题描述
我有一个基类和一个子类。这两个类都没有单例构造函数(无状态),其中包含非线程安全的状态字段。
在这种情况下,我声明了一个具有默认值的受保护变量,并根据某些条件更新受保护变量。在子类中,我使用更新的变量值。这在正常情况下可以正常工作,但是在处理多个线程时会导致意外结果。
有人可以建议一种更好的方法来处理这个用例而不向类添加单例构造函数吗?
示例代码:(只是用于理解问题的虚拟代码)
public class ParentClass {
protected int score = 0;
public void updateScore() {
//update the variable based on certain conditions
score = 99;
}
}
儿童班
public class ChildClass extends ParentClass{
public static void main(String[] args) {
ChildClass c = new ChildClass();
c.updateScore();
c.printScopre();
}
private void printScopre() {
System.out.println("Score " + score);
}
}
解决方案
推荐阅读
- javascript - 仅当数据来自循环的 GET 请求时,JSON stringify 才会失败
- angular - 如何使用角度通过带有jwt令牌的rest调用下载文件
- python - Python:从多个创建输出 CSV。查找
- javascript - Angular 全局错误处理程序将 error.message 打印为错误本身
- python - 在 Python 中计算航空公司排名 - NameError: name is not defined
- elasticsearch - 如何在 Elasticsearch 输出脚本字段中访问 @metadata
- jsp - 将 servlet 转换为 Jax-RS Web 服务时如何替换隐式 pageContext 对象?
- php - php 序列化巨大的浮点数导致舍入和格式问题
- python - 使用组结果转换 pandas DataFrame
- jquery-mobile - jQuery Mobile data-native-menu="true" 新窗口问题