Мне нужна помощь с потоками, мне нужно создать программу, которая будет динамически закрывать и открывать потоки (то есть, когда мне понадобится поток, он запустится, если он больше не нужен, он остановится), Теперь мои вопросы? is k, если я только завершаю метод run этого потока, считается ли он остановкой потока или как точно закрыть поток.
public void run() {
while(!tasks.isEmpty()) {
try {
if(tasks.peek() != null) {
Thread.sleep(1000);
waitingPeriod.getAndAdd(-1);
tasks.peek().setProcessingTime(tasks.peek().getProcessingTime() - 1);
if(tasks.peek().getProcessingTime() == 0) {
// System.out.println("Removed task " + tasks.peek().getId() + " from queue" );
tasks.remove();
Thread.currentThread().interrupt();
continue;
}
}
}
catch(InterruptedException e) {
}
//take next task from queue
//stop the thread for a time equal with the task's processing time
//decrement the waitingPeriod
}
}
Этот поток работает над очередью, если в нем есть элементы, я запускаю его из другого класса, и я хочу, чтобы этот поток запускался, только если у меня есть элементы, поэтому, когда очередь очищается, я хочу, чтобы нить, чтобы остановить. Как мне остановить поток, достаточно, чтобы завершить функцию запуска с этим, пока?