В документации говорится, что вы можете использовать if-else несколько раз или switch-case:
int condition;
setCondition(int condition) {
this.condition = condition;
}
Либо коммутационный футляр
switch (condition) {
case 1: print("one"); break;
case 2: print("two"); break;
или
if (condition == 1) { print("one"); }
else if (condition == 2) { print("two"); }
Далее, condition объявлен volatile, а метод setCondition() вызывается из нескольких потоков.
if-else не является атомарным, а volatile переменная write является синхронизирующим действием. Таким образом, в последнем коде могут быть напечатаны как "одна", так и "две" строки.
Этого можно избежать, если была использована локальная переменная метода с начальным значением:
int localCondition = condition;
if (local condition == ..) ..
Оператор switch-case содержит некоторую начальную копию переменной? Как выполняются операции с поперечными потоками?