Quiero crear un grupo de subprocesos de tamaño fijo que no admite ninguna tarea en su cola. En otras palabras, si el grupo de subprocesos está actualmente en uso, la tarea entrante debe rechazarse directamente. Basado en el documentation, una forma de hacer esto, en mi opinión, sería crear un objeto ficticio Queue que se niega a admitir una tarea. ¿Cuál es la forma idiomática de lograr esto en Java?ThreadPoolExecutor sin cola
Respuesta
Puede usar un SynchronousQueue en su ThreadPoolExector, que es una cola que no contiene objetos. El grupo de subprocesos en caché usa esto porque crea nuevos subprocesos a pedido.
Si no se puede poner en cola, pero sugeriría usar el RejectedExecutionHandler para ejecutar la tarea en el hilo actual. De esta manera siempre se ejecutará "inmediatamente".
BTW: Sería útil dejar en claro por qué quieres hacer esto.
¿Puede explicar en detalle por qué quiere hacer tal cosa? El propósito fundamental de un TP + Q es tener un "mecanismo de retención" automático para el trabajo y desacoplar a los trabajadores del proceso de creación de trabajo. Si su intención es solo tener tantos paquetes de trabajo aceptables como trabajadores, entonces realmente no necesita un TPE.
- 1. Bloque ThreadPoolExecutor cuando la cola está llena?
- 2. cola Reordenar en ThreadPoolExecutor de Java
- 3. política ThreadPoolExecutor
- 4. Estrategia de Java ThreadPoolExecutor, 'Transferencia directa' con cola?
- 5. Eliminando todas las tareas en cola de un ThreadPoolExecutor
- 6. especificando problema ThreadPoolExecutor
- 7. Trabajo/Tarea Robo ThreadPoolExecutor
- 8. Punto muerto en ThreadPoolExecutor
- 9. Cómo manejar RejectedExecutionException con ThreadPoolExecutor en java
- 10. Manejo de excepciones para ThreadPoolExecutor
- 11. MultiThreading Vs ThreadPoolExecutor
- 12. ThreadPoolExecutor con ArrayBlockingQueue
- 13. ¿Cómo eliminar tareas viejas en cola en ThreadPoolExecutor e insertar nuevas tareas?
- 14. Cómo esperar a que un ThreadPoolExecutor termine
- 15. Cómo utilizar AsyncTask con ThreadPoolExecutor
- 16. Priority ThreadPoolExecutor en Java (Android)
- 17. ¿Cómo funciona maximumPoolSize de ThreadPoolExecutor?
- 18. ¿Cómo funciona Keep-alive con ThreadPoolExecutor?
- 19. Java ThreadPoolExecutor atorado al usar ArrayBlockingQueue
- 20. JAVA - Cancele las tareas que ejecutan ThreadPoolExecutor
- 21. ¿Cómo puedo eliminar trabajos específicos de la cola Resque sin borrar toda la cola?
- 22. Ordenando una cola usando la misma cola
- 23. ¿Existe una implementación de cola FIFO optimista sin bloqueo?
- 24. cola segura para hilos sin bloqueo en C++?
- 25. Cola eficiente en Haskell
- 26. Cola C++ con dependencias
- 27. Sincronización de una cola
- 28. perl cola de proceso
- 29. Cola-recursividad en Oz
- 30. cola de llamadas AJAX
La tarea se puede recoger con otro ejecutor de grupo de subprocesos con subprocesos libres, en lugar de esperar en la cola del primero. ¿Qué debería estar usando en lugar de un ThreadPoolExecutor? –
Si desea controlar la ejecución, entonces TPE no es su elección. Es mejor que tenga una colección simple de subprocesos de trabajo a la que puede entregar el trabajo (si están disponibles) un conjunto simple que usted construye y tira/empuja los trozos dentro y fuera del hilo principal. –
vivekv