Как обрабатывать проблемы безопасности переменных переменных экземпляра, когда у класса нет одноэлементного конструктора в Java - PullRequest
0 голосов
/ 01 мая 2019

У меня есть один базовый класс и один дочерний класс. Где оба класса не имеют одноэлементного конструктора (без сохранения состояния), который содержит поля состояния, которые не являются потокобезопасными.

В этом случае я объявил защищенную переменную со значением по умолчанию и на основании определенных условий обновляю защищенные переменные. А в дочернем классе я использую обновленные значения переменных. Это нормально работает с обычными случаями, но это приведет к неожиданным результатам при работе с несколькими потоками.

Может кто-нибудь предложить лучший способ справиться с этим вариантом использования без добавления одноэлементного конструктора в класс?

Пример кода: (просто фиктивный код для понимания проблемы)

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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...