2016-10-17 2 views
0

есть spring scheduler способ. И ExecutorServiceКак остановить/приостановить конкретную тему из ExecutorService?

@Scheduled(fixedRate = 5000) 
    public void startSchedule() throws IOException{ 
threadPool.submit(() -> { 
      if(.......)return; 
      try { 
       generate(reportTasck); 
      } catch (NurException | IOException e) { 
       e.printStackTrace(); 
      } 
     }); 
      } 

Каждые 5 сек начать свой метод, и если необходимое условие - начать новую нить с моей логикой. Как я могу остановить/приостановить конкретный поток?

У меня есть кнопка на странице veb, и если я нажимаю ее, мне нужно остановить мою нить.

ответ

0

Существует уже довольно некоторое обсуждение SO относительно остановки потоков. По разным причинам вы не должны останавливать или убивать нить, например. отметить:

How do you kill a thread in Java?

Для того, чтобы нить правильно очистку своих ресурсов она должна быть ответственность нить, чтобы завершить себя, например, периодически проверяя некоторые условия, например, общую переменную или через флаг прерывания потока. См. Этот ответ для получения более подробной информации:

How to stop a thread created by implementing runnable interface?

Смежные вопросы