У вас есть приоритеты потоков и все в порядке. Единственная проблема здесь в том, что stop
не обязательно имеет одинаковое значение во всех потоках. Каждый поток кэширует свое собственное значение для stop
в локальной памяти потока. Когда один поток устанавливает значение stop
на true
, другие потоки не обязательно «видят» это изменение. Исправить это просто; просто объявите stop
как volatile
вот так:
private static volatile boolean stop = false;
Это сохраняет переменную в основной памяти, заставляя потоки взаимодействовать друг с другом.