【发布时间】:2013-06-27 05:47:42
【问题描述】:
我有一段代码在 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();
}
但有时会出现以下空指针异常:不知道为什么。还使用 ExecutorService 为每个池跨越一个线程
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)
【问题讨论】:
-
等等...你为什么不使用
ScheduledExecutorService? -
我终于在第 117 行有 shutdown() { executorService.shutdown(); }
-
@fge: 如何使用ScheduledExecutorService?没用过
-
您可以
.scheduleAtFixedRate()任何您选择的内容。 Link to Javadoc。它比计时器更容易使用。