首页 > 解决方案 > 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);
    }
}

标签: javajava-8

解决方案


推荐阅读