Если вы просто хотите, чтобы замедлить другую нить и не иметь его выход, вы можете взять какой-нибудь другой подход ...
С одной стороны, так же, как выход вы можете иметь переменный де-приоритеты, которые, когда установлено, помещает ваш поток в сон на 100 мс на каждой итерации. Это эффективно остановило бы его, пока ваша другая нить искала, а затем, когда вы переориентируете его, он вернется на полную скорость.
Однако, это немного неряшливо. Так как вы только хотите, чтобы одна вещь работала, но вы хотите, чтобы она не забывала обрабатывать другие, когда приоритет сделан, вы можете поместить свою обработку в класс с методом .process(), который вызывается повторно. Если вы хотите приостановить обработку этого запроса, вы просто перестаете вызывать .process на этом объекте некоторое время.
Таким образом вы можете реализовать стек таких объектов, и ваш поток просто выполнит stack.peek(). Process(); каждая итерация, поэтому нажатие новой, более важной задачи на стек автоматически остановит любую предыдущую задачу от работы.
Это приводит к гораздо более гибкому планированию - например, вы могли бы вернуть процесс process(), если ему нечего делать, и в этот момент ваш планировщик может перейти к следующему элементу в стеке и попробовать его «процесс»(), давая вам несколько серьезных задач в одном потоке без перенапряжения ваших ресурсов (сеть, я предполагаю)
Я действительно не понимаю, если вы хотите приоритезировать темы или действительно остановить потоки !? –
не хотите расставлять приоритеты. но 2 избегайте всех предыдущих ... – bandit