TimerTask で 5 秒ごとに実行されるコードがあります。また、ExecutorService を使用して各プールのスレッドをスパンします。
if(!alertingPools.isEmpty())
{
Object[] Pools = alertingPools.values().toArray();
executorService = Executors.newFixedThreadPool((Pools.length));
for (Object pool : Pools) {
executorService.execute(new DataAccumulation(timeStartSecData,
timeEndSec,pool, jsonArrayResult));
finally {
executorService.shutdown();
}
ただし、次のヌル ポインター例外が発生することがあります。
Exception in thread "Timer-0" java.lang.NullPointerException
at com.ebay.lbmongoservice.AlertsData$1.run(AlertsData.java:117)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)