разве на дебатах бывает что кто то может сказать 0 слов ?)
поэтому Иванов 100% скажет 200
а вот остальные уже .... меньше почему не прохожу проверку ?
вывод в консоль :
Иванов сказал речь 200 раз
Петров сказал речь 30 раз
Сидоров сказал речь 88 раз
package com.javarush.task.task16.task1608;
/*
Продвижение на политических дебатах
*/
public class Solution {
public static int totalSpeechCount = 200;
public static int utterancesPerSpeech = 1000000;
public static void main(String[] args) throws InterruptedException {
Politician ivanov = new Politician("Иванов");
ivanov.join();
Politician petrov = new Politician("Петров");
Politician sidorov = new Politician("Сидоров");
while (ivanov.getSpeechCount() + petrov.getSpeechCount() + sidorov.getSpeechCount() < totalSpeechCount) {
}
System.out.println(ivanov);
Thread.sleep(500);
System.out.println(petrov);
Thread.sleep(1000);
System.out.println(sidorov);
}
public static class Politician extends Thread {
private 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.format("%s сказал речь %d раз", getName(), getSpeechCount());
}
}
}