Подробно объяснить, как влияет ключевое слово volatile в коде

500 руб.за час
22 октября 2022, 09:41 • 2 отклика • 19 просмотров
Подробно объяснить через дискорд или zoom про volatile, как влияет ключевое слово volatile у поля utteranceCount в данном коде.
Почему без volatile программа не выводит данные (или выводит очень долго?!) Почему при дебагинге даже без volatile все работает и выводится.

public class Solution {
public static int totalSpeechCount = 200;
public static int utterancesPerSpeech = 1000000;
public static int ext = 0;

public static void main(String[] args) throws InterruptedException {
Politician ivanov = new Politician("Иванов");

Politician petrov = new Politician("Петров");
Politician sidorov = new Politician("Сидоров");

while (ivanov.getSpeechCount() + petrov.getSpeechCount() + sidorov.getSpeechCount() < 200) {
}

System.out.println(ivanov);
System.out.println(petrov);
System.out.println(sidorov);

}


public static class Politician extends Thread {

public volatile int utteranceCount;


public Politician(String name) {
super(name);
start();
}

public void run() {
while (utteranceCount < totalSpeechCount * utterancesPerSpeech) {
utteranceCount++;
}
}


public int getSpeechCount() {

return utteranceCount / utterancesPerSpeech;
}

@Override
public String toString() {
return String.<em>format</em>("%s сказал речь %d раз", getName(), getSpeechCount());
}
}
}
Отзывы
Исполнитель четко исполнил заказ. Предельная вежливость и корректность в общении. Сразу понятно, что человек профессионал своего дела. Рекомендую!
~ 2 года назад
R50 e76d733ddbe57aefbbc0f131d278a5fe
Фрилансер
Задача выполнена успешна.
~ 2 года назад