TimerTask返回nullpointer异常

时间:2013-06-27 05:47:43

标签: java timertask

我有一段代码在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)

1 个答案:

答案 0 :(得分:0)

我无法确定try之前是否有if,但如果没有finally,则无法使用try。如果if,则可能不会转到alertingPools.isEmpty(),这意味着 它甚至从未初始化executorService = Executors.newFixedThreadPool((Pools.length));。这将导致finally子句返回null.shutdown导致问题。如果可能,尝试在if之前移动初始化。我首先尝试找出alertingPools.isEmpty()的天气。