Zukünftige Aufgabe abgelehnt, von ThreadPoolExecutor

Ich habe eine ThreadPoolExecutor und ich, Einreichen einer Aufgabe zu.

private ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(1));

Dieser code legt die Runnable zu den ThreadPoolExecutor.

 protected void waitAndSweep(final String symbol) {

    runnable = new Runnable() {
      public void run() { /* irrelevant code */ }
    };

    try {
      Future<?> self = threadPoolExecutor.submit(runnable);
      futures.add(self);
    } catch (RejectedExecutionException re) {
      /* this exception will be thrown when wait and sweep is called more than twice.
       * threadPoolExecutor can have one running task and one waiting task.
       */
    } catch (Exception e) {
      logEvent(StrategyEntry.ERROR, "waitAndSweep", symbol, "Exception caught...", e);
    }
  }

Den folgenden code beendet die Aufgabe.

protected synchronized void stop(StrategyEntry entry) throws Exception {
    for (Object future : futures) {
      ((Future<?>) future).cancel(true);
    }
    futures.clear();

    threadPoolExecutor.shutdown();
}

Ist hier das problem: Wenn ich versuche zu stoppen, die Aufgabe ist, erhalte ich folgende exception:

Aufgabe java.util.concurrent.FutureTask@3a475611 abgelehnt java.util.concurrent.ThreadPoolExecutor@216393fb[Beendet, die pool-Größe = 0, active threads = 0, in der Warteschlange-Aufgaben = 0, abgeschlossene Aufgaben = 1]

  • Rufen Sie shutdown() auf diesem executor irgendwo?
  • ja in der stop-Methode
  • Sie erstellen eine Unterlage, Warteschlange mit Kapazität 1 - ist es eine andere Aufgabe, die bereits dort?
  • Aus der Fehlermeldung, die er bekommt, es ist deutlich sichtbar, dass der Testamentsvollstrecker ist in der Terminated Zustand -, die, was die Ursache der Ausnahme.
  • Wenn eine andere Aufgabe bereits dort, Testamentsvollstrecker wird diese Aufgabe ablehnen und es wird gefangen werden durch die catch-block und wird es nie in der GUI angezeigt.
  • Welche Zeile in Ihrem code die Ausnahme ausgelöst? Was ist der Typ der Ausnahme?
  • Haben Sie jemals zu verwalten, um eine Antwort auf diese Frage

InformationsquelleAutor MMPgm | 2016-02-11
Schreibe einen Kommentar