Остановка потоков динамически в java - PullRequest
0 голосов
/ 31 марта 2020

Мне нужна помощь с потоками, мне нужно создать программу, которая будет динамически закрывать и открывать потоки (то есть, когда мне понадобится поток, он запустится, если он больше не нужен, он остановится), Теперь мои вопросы? 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
    }

}

Этот поток работает над очередью, если в нем есть элементы, я запускаю его из другого класса, и я хочу, чтобы этот поток запускался, только если у меня есть элементы, поэтому, когда очередь очищается, я хочу, чтобы нить, чтобы остановить. Как мне остановить поток, достаточно, чтобы завершить функцию запуска с этим, пока?

...