Duplicar posibles:
Java Executors: how can I set task priority?cola Reordenar en ThreadPoolExecutor de Java
Tengo un ThreadPoolExecutor construido utilizando un LinkedBlockingDequeue y quiero manipular la cola subyacente, sin embargo leyendo esto en la documentación que hace estoy muy nervioso.
mantenimiento cola
Método getQueue() permite el acceso a la cola de trabajo para fines de monitoreo y depuración. El uso de este método para cualquier otro propósito es altamente desaconsejado. Dos métodos suministrados, eliminar (java.lang.Runnable) y purgar() están disponibles para ayudar en la recuperación de almacenamiento cuando se cancela un gran número de tareas en cola.
Específicamente quiero ser capaz de
- comprobar la cola para ver si un elemento ya existe. Supongo que esto está bien ya que no debería ser necesario bloquear solo para ver los elementos en la cola.
- Quiero reordenar la cola en función de alguna señal. Esto obviamente puede ser problemático. Me preguntaba si hay una forma preferida de hacerlo para no estropear la cola para otros usos.
Gracias
Como indica la documentación, no debe controlar la cola desde ese método. Deberías controlarlo desde la cola que pasaste a tu 'ThreadPoolExecutor'. – pickypg
¿Pero todavía no corre el riesgo de problemas? Pensé que si llamaba a getQueue() eso es lo mismo que modificar el objeto de cola real que paso. – Jon
No creo que pueda usar un PriorityComparator como se sugiere en la otra pregunta porque PriorityComparator no proporciona ninguna forma de reordenar los elementos una vez que están en la cola. – Jon