2010-10-24 22 views
6

Çok fazla görüntüyü ThreadPoolExecutor ile internete yüklerim.ThreadPoolExecutor'da eski sıraya alınmış görevler nasıl kaldırılır ve bunun yerine yeni görevler eklenir?

Yeni görüntüler bulduğunda, önce render yapmam gerekiyor, bu durumda ThreadPoolExecutor içinde sıraya alınmış olan eski görevleri iptal etmek ve indirmek için bu yeni öğeleri eklemeye devam etmek istiyorum.

ThreadPoolExecutor'da "clear queue" yönteminin bulunmadığını ve "purge" yönteminin bunun için iyi olmadığının sesini buldum.

Ne yapmalıyım?

Bu yürütücünün "kapatma" adını vermeyi düşündüm ve bunun için uygun olup olmadığından emin olmak için yeni bir tane oluşturun.

cevap

4

ThreadPoolExecutor, remove() yöntemine sahiptir. Bunu, getQueue() ile birlikte kullanabilir veya kuyruğa sahip olan ve kaldırıma ihtiyaç duyabileceğiniz kendi koleksiyonunuzu Runnable tutun. Kendi koleksiyonunuzu saklarsanız, bittiğinde koleksiyonunuzdaki runnable'ı kaldıran bazı mechinisminiz olduğunu unutmayın.

7

Bunu denediniz mi? Kaldırmak istediğiniz Çalıştırılabilir bir görevdir.

veya kuyruğu temizlemek isterseniz.

pool.getQueue().clear() 
+0

Javadoc, getQueue yöntemini kullanmamanız gerektiğini söylese de, muhtemelen OP'nin sorusuna bağlı olarak gitmek istediğiniz yaklaşımdır. –

+0

Evet, javadoc getQueue yönteminin kullanılmasını önermediğini söylüyor, bunun iyi bir yol olmadığını düşündüm. – virsir