我正在开发一个监控软件nobreaks,我正在使用计划每五秒运行一次的API ScheduleExpression
,我的代码可以在下面看到:
@PostConstruct
public void agendarMonitoramento(){
System.out.println("=================================================================================================");
System.out.println("Iniciando monitoramento");
System.out.println("=================================================================================================");
upsIndividual = nobreaksEjb.getCadNobreaskMonitoramentoIndividual();
ScheduleExpression scheduleExpression = new ScheduleExpression().second("*/5").minute("*").hour("*");
final TimerConfig nobreaksIndividuais = new TimerConfig(NOBREAK_SEM_BANCO_UPS, false);
timerService.createCalendarTimer(scheduleExpression, nobreaksIndividuais);
System.out.println("Iniciado...");
}
@Timeout
public void timeout(Timer timer) {
for (CadNobreak cadNobreak : upsIndividual) {
tHNobreak.monitorarNobreak(cadNobreak);
}
}
但我有一个问题,我通过VisualVM确定这些线程始终处于活动状态,并且导致低于活动线程数的OutOfMemory
可以看到:
我想知道为什么这些线程在执行后没有关闭,我该怎么做才能解决这个问题。