Если вы просто хотите замедлить другой поток и не иметь выхода из него, вы можете воспользоваться другим подходом ...
С одной стороны, как и при выходе, вы можете иметь переменную приоритизации, которая, если установлено, переводит ваш поток в спящий режим на 100 мс на каждую итерацию.Это фактически остановит его, пока ваш другой поток выполнит поиск, затем, когда вы измените его приоритетность, он вернется к полной скорости.
Однако это немного неаккуратно.Так как вы когда-либо хотите, чтобы одна вещь выполнялась, но вы хотите, чтобы она не забывала обрабатывать другие, когда выполняется приоритетная задача, вы можете поместить свою обработку в класс с помощью метода .process (), который вызывается повторно.Если вы хотите приостановить обработку этого запроса, вы просто на время прекращаете вызывать .process для этого объекта.
Таким образом, вы можете реализовать стек таких объектов, и ваш поток просто выполнит stack.peek ().процесс();каждая итерация, поэтому добавление новой, более важной задачи в стек автоматически останавливает выполнение любой предыдущей задачи.
Это приводит к гораздо более гибкому планированию - например, вы можете сделать, чтобы process () возвращал false, если тамему нечего делать, и в этот момент ваш планировщик может перейти к следующему элементу в стеке и попробовать его метод 'process (), предоставляющий вам серьезные возможности многозадачности в одном потоке без перегрузки ваших ресурсов (сеть, I').м угадал)