0

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)
4

1 に答える 1

0

tryの前にがあるかどうかはわかりませんが、少なくとも. がないとif使用できません。の場合、に移動しない可能性があります。つまり、 を初期化することさえありません。これにより、finally 句が問題の原因として戻ってきます。可能であれば、初期化を の前に移動してみてください。私はまず、天気の有無を調べることから始めました。finallytryifalertingPools.isEmpty()executorService = Executors.newFixedThreadPool((Pools.length));null.shutdownifalertingPools.isEmpty()

于 2013-06-27T06:17:07.013 に答える