2010-10-24 15 views
6

Puedo cargar muchas imágenes desde internet con un ThreadPoolExecutor.¿Cómo eliminar tareas viejas en cola en ThreadPoolExecutor e insertar nuevas tareas?

Cuando se encuentran imágenes nuevas, necesito renderizarlas primero, en ese caso quiero abandonar las tareas anteriores que aún están en cola en el ThreadPoolExecutor y agregué estos nuevos elementos para descargar.

Encontré que no hay un método de "cola clara" en ThreadPoolExecutor, y el método "purgar" parece no ser bueno para esto.

¿Qué debo hacer?

Solo pensé llamar al "cierre" de este ejecutor y recrear uno nuevo para hacer esto, no estoy seguro si es apropiado.

Respuesta

4

ThreadPoolExecutor tiene un método remove(). Puede usarlo junto con getQueue() o mantener su propia colección de Runnable s que han estado en cola y es posible que deban eliminarse. Si mantienes tu propia colección, recuerda tener algo de mechinismo que elimine el ejecutable de tu colección cuando haya terminado.

7

¿Has probado esto?

ThreadPoolExecutor pool = .....; pool.remove(task); 

tarea es el Runnable que desea eliminar.

o si desea borrar la cola.

pool.getQueue().clear() 
+0

Aunque el javadoc dice que realmente no deberías usar el método getQueue, ese es probablemente el enfoque que deseas seguir en función de la pregunta del OP. –

+0

Sí, el javadoc dice que el método getQueue no se sugiere usar, solo pensé que no era una buena manera. – virsir

Cuestiones relacionadas