Java TimerTask с Spring, работающей на Tomcat Nio Thread - PullRequest
0 голосов
/ 06 августа 2020

У меня есть TimerTask, который объявлен и создан в методе инициализации Spring Controller. У таймера есть собственный поток таймера, и он работает по расписанию. Я не могу понять, почему иногда он работает в потоке https-nio tomcat? Это то, как он инициализирован в контроллере пружины, создавая здесь неправильное поведение? И как этого избежать? Может ли использование ScheduledThreadPoolExecutor решить эту проблему?

Код выглядит следующим образом

Spring. xml

<bean id="myRunnableTask" class="MyRunnableTask" />
<bean id="myController" class="MyController" init-method="init">
 <constructor-arg index="1" ref="myRunnableTask" />
</bean>

Java код инициализации задачи таймера

import org.springframework.stereotype.Controller;

@Controller
public class MyController
{
 private find MyRunnable myRunnable;
 
 public MyController(MyRunnable myRunnable)
 {
     myRunnable = myRunnable;
 }

 public void init()
 {
       
        Timer timer = new Timer(true);
        Calendar calendar = Calendar.getInstance();

        calendar.add(Calendar.SECOND, 60);
        timer.scheduleAtFixedRate(myRunnable, 
                                  calendar.getTime(), 300);
  } 
   //Rest of the Code
 }
...