Lo que necesito es un método similar a shutdownNow, pero, después de eso, puede enviar nuevas tareas. My ThreadPoolExecutor aceptará un número aleatorio de tareas durante la ejecución de mi programa.JAVA - Cancele las tareas que ejecutan ThreadPoolExecutor
Respuesta
Puede obtener el futuro de cada presentación, almacenar ese futuro en una colección, luego, cuando desee cancelar las tareas, invocar future.cancel() de todas las tareas en cola.
Con esta solución, el Exectuor aún se está ejecutando y las tareas en ejecución se cancelan o no se ejecutarán si están en cola.
Gracias, mi única pregunta con respecto a sus soluciones fueron aproximadamente del tamaño de la colección porque mi ThreadPoolExecutor recibirá tareas ilimitadas. Pero con un mapa
¿Por qué no crear su propio ExecutorService
que exhiba este comportamiento?
Echa un vistazo al método getQueue(). Estoy bastante seguro de que el borrado funcionaría (sin embargo, no probado).
GetQueue() solo puede limpiar las tareas en la cola. No se puede hacer nada con las tareas que ya se están ejecutando. – rgomesf
¿No es suficiente hacer getQueue() y borrarlo? Si realmente necesita intentar detener la ejecución de tareas, necesitaría subclasificar el ThreadPoolExecutor y esencialmente volver a implementar shutdownNow() pero solo copiar el bit que envía una interrupción a cada subproceso. Tenga en cuenta que esto todavía no es ninguna garantía de que realmente hará que cese inmediatamente y no haga ningún cálculo adicional. Necesitará un enfoque totalmente diferente si necesita hacer eso.
Ya traté de volver a implementar shutdownNow() pero algunas variables son privadas, y sin ellas no puedo hacer lo que quiero ... – rgomesf
- 1. Formulario de cierre con tareas que ejecutan
- 2. Eliminando todas las tareas en cola de un ThreadPoolExecutor
- 3. tareas que se ejecutan en paralelo en pitón
- 4. Cómo manejar RejectedExecutionException con ThreadPoolExecutor en java
- 5. Priority ThreadPoolExecutor en Java (Android)
- 6. política ThreadPoolExecutor
- 7. cola Reordenar en ThreadPoolExecutor de Java
- 8. ¿Cuándo se ejecutan las anotaciones de Java?
- 9. ¿Cómo puedo enumerar las tareas programadas que se ejecutan en mi base de datos?
- 10. ¿Cómo eliminar tareas viejas en cola en ThreadPoolExecutor e insertar nuevas tareas?
- 11. MultiThreading Vs ThreadPoolExecutor
- 12. Java ThreadPoolExecutor atorado al usar ArrayBlockingQueue
- 13. Trabajo/Tarea Robo ThreadPoolExecutor
- 14. Java ExecutorService: awaitTerminación de todas las tareas creadas recursivamente
- 15. Manejando excepciones de tareas de Java ExecutorService
- 16. especificando problema ThreadPoolExecutor
- 17. ¿Cómo se ejecutan correctamente varias tareas asíncronas en paralelo?
- 18. Rails tareas de rake DB se ejecutan pero nunca salen
- 19. Manejo de excepciones para ThreadPoolExecutor
- 20. Estrategia de Java ThreadPoolExecutor, 'Transferencia directa' con cola?
- 21. Cómo esperar a que un ThreadPoolExecutor termine
- 22. ThreadPoolExecutor sin cola
- 23. cómo depurar tareas Apio/Django se ejecutan localmente en Eclipse
- 24. ¿Cómo funciona Keep-alive con ThreadPoolExecutor?
- 25. ¿Las dependencias de tareas siempre se ejecutan en un orden específico con rake?
- 26. ¿Deberían especificarse las tareas cron de linux con un "&" para indicar que se ejecutan en segundo plano?
- 27. Las secuencias de comandos que se ejecutan en jquery.ajax() páginas cargadas ejecutan document.ready demasiado pronto
- 28. ¿Cómo exactamente están programadas las tareas internamente?
- 29. ThreadPoolExecutor con ArrayBlockingQueue
- 30. Múltiples versiones de Java que se ejecutan simultáneamente en Windows
¿Existiría la opción de cerrar el ExecutorService actual y reemplazarlo por uno nuevo? – tylermac