Eşzamanlı push/pop öğeleri için kullanıyorum ConcurrentLinkedDeque var, ve ben bir öğe yığınından alıyorsanız bazı async görevleri var ve varsa elemanın komşuları var.ExecutorService üzerinde çalışan tüm görevlerin tamamlanıp tamamlanmadığını nasıl kontrol edilir
örnek kod:
private ConcurrentLinkedDeque<Item> stack = new ConcurrentLinkedDeque<>();
private ExecutorService exec = Executors.newFixedThreadPool(5);
while ((item = stack.pollFirst()) != null) {
if (item == null) {
} else {
Runnable worker = new Solider(this, item);
exec.execute(worker);
}
}
class Solider{
public void run(){
if(item.hasNeighbors){
for(Item item:item.neighbors){
stack.push(item)
}
}
}
}
Ben soru cevaplar ise döngü içinde ek açıklama istiyorum - "Executor herhangi bir görev çalışıyor?"
:
İşte bir kod örnektir! Çözümünüzü kullandım, iyi çalışıyor, teşekkürler! :) – user4129715
Burada geçenlerin amacı ne olurdu? Gelecek olamaz.Yani kendi başına gerçek mi yoksa yanlış mı? Btw - büyük cevap! – User3
@ User3 'allDone'un amacı, vadeli işlemlerin yapılmasının ya da yapılmamasının (' & = 'operatörünü kullanarak) tek bir boole değeri elde etmektir. future.isDone() 'sadece bireysel bir Geleceğin tamamlanıp tamamlanmadığını kontrol etmek için kullanılabilir –