Runnable картины не изменит.
Во-первых комментарии по коду
while (ivanov.getCountSpeaches() + petrov.getCountSpeaches() + sidorov.getCountSpeaches() < totalCountSpeeches) {
}
тут я так понимаю ты ждешь когда все вместе наберут 200 голосов и после этого цикл прекратится и у тебя будут данные о том кто сколько голосов набрал.
Проблема в том что конец цикла происходит в потоке main, а остальные потоки никак об этом не знают и продолжат работать. И между окончанием цикла и выводом результатов на экран 3 потока успеют много чего сделать и результаты уже будут сильно отличаться. Ну или не сильно ))) т.е. сумма ровно в 200 не сойдется.
Проблема еще в том что у тебя зависает еще до выхода из цикла и проблема эта решается в строке
private int countSounds;
добавлением волшебного слова volatile.
почему - см. Java Memory Model либо если не поймешь пиши в комменты ))