Quello che mi serve è un metodo simile a shutdownNow, ma, dopo averlo inviato, è possibile inviare nuove attività. My ThreadPoolExecutor accetterà un numero casuale di attività durante l'esecuzione del mio programma.JAVA - Annulla le attività eseguibili di ThreadPoolExecutor
risposta
È possibile afferrare il Futuro di ciascuna submission, archiviare Future in una raccolta, quindi quando si desidera annullare le attività, richiamare future.cancel() di tutte le attività in coda.
Con questa soluzione, Exectuor è ancora in esecuzione e tutte le attività in esecuzione vengono annullate o non verranno eseguite se sono in coda.
Grazie, la mia unica domanda riguardo le tue soluzioni riguardavano la dimensione della collezione perché il mio ThreadPoolExecutor riceverà attività illimitate. Ma con una mappa
Perché non creare il proprio ExecutorService
che presenta questo comportamento?
Dai un'occhiata al metodo getQueue(). Sono abbastanza sicuro che la pulizia funzionerebbe (non testata comunque).
GetQueue() può solo pulire le attività in coda. Non posso fare nulla con le attività già in esecuzione .. – rgomesf
Non è sufficiente fare solo getQueue() e cancellarlo? Se è davvero necessario tentare di interrompere l'esecuzione delle attività, è necessario creare una sottoclasse di ThreadPoolExecutor ed essenzialmente implementare nuovamente shutdownNow(), ma copiare solo il bit che invia un interrupt a ciascun thread. Intendiamoci, tuttavia, non è ancora garantito che in effetti si arresteranno immediatamente e non si effettueranno ulteriori calcoli. Avrai bisogno di un approccio completamente diverso se hai bisogno di farlo.
Ho già provato a ri-implementare shutdownNow() ma alcune variabili sono private e senza di esse non posso fare quello che voglio ... – rgomesf
- 1. pianificazione attività eseguibili in java
- 2. Attività futura respinta da ThreadPoolExecutor
- 3. Java ExecutorService e ThreadPoolExecutor
- 4. Celery vs. ProcessPoolExecutor/ThreadPoolExecutor
- 5. Come rimuovere le vecchie attività in coda in ThreadPoolExecutor e inserire invece nuove attività?
- 6. Politica ThreadPoolExecutor
- 7. Annulla/arresta attività asincrona Android
- 8. arresto delle attività eseguibili Handler quando distruggendo attività
- 9. Annulla attività su timeout in RxJava
- 10. Lavoro/Task Stealing ThreadPoolExecutor
- 11. Interject Java Oggetti eseguibili in ExecutorService
- 12. ThreadPoolExecutor senza coda
- 13. java 8 stucks threadPoolExecutor dopo compiti N con istruzione return
- 14. Come gestire RejectedExecutionException con ThreadPoolExecutor in java
- 15. Java ThreadPoolExecutor si blocca durante l'utilizzo di ArrayBlockingQueue
- 16. Strategia Java ThreadPoolExecutor, 'Handoff diretto' con la coda?
- 17. Gestione delle eccezioni per ThreadPoolExecutor
- 18. Attività futura di ExecutorService che non si annulla realmente
- 19. ThreadPoolExecutor con ArrayBlockingQueue
- 20. attività di background java
- 21. Qual è l'uso di allowCoreThreadTimeout() in ThreadPoolExecutor?
- 22. Vim annulla: annulla le modifiche dopo la scrittura del file
- 23. specificando problema ThreadPoolExecutor
- 24. ThreadPoolExecutor Block quando la coda è piena?
- 25. Il mio ThreadPoolExecutor perde memoria?
- 26. Deadlock in ThreadPoolExecutor
- 27. È buona norma impostare allowCoreThreadTimeOut() in ThreadPoolExecutor?
- 28. Quando si specificano le dimensioni del pool principale e massimo in ThreadPoolExecutor una buona idea?
- 29. pianificazione attività timer java
- 30. Esecutori Java: come posso interrompere le attività inoltrate?
L'opzione esiste per arrestare l'ExecutorService corrente e sostituirlo con uno nuovo? – tylermac