2012-08-02 15 views
5

Ben FutureTask.isDone()Java FutureTask tamamlama onay

o biraz bilgi verir, Oracle Java API, kontrol ettikten ama görevi tamamlandı veya herhangi hatayla sonlandırıldı olup olmadığını kontrol etmek gerekir. isDone() yöntemi, tamamlansa/sonlandırılsa bile geri dönecektir. Ama bir sorun nedeniyle tamamlanıp sonlandırıldığını mı bilmem gerekiyor.

cevap

11

FutureTask yapıldıysa, daha sonra get() numaralı telefonu arayın (herhangi bir zaman aşımı olmadan olabilir, hemen geri dönmelidir). Ya bazı sonuca dönmek veya atacağım:

ExecutionException - hesaplama Görevinizdeki istisnayı dönecektir bir istisna

ExecutionException.getCause() attı eğer.

+0

'FutureTask' henüz tamamlanmamış olsa bile' get() 'diyebilirsiniz; bu durumda 'get()' tamamlanmasını bekler. – Pino

0

Neden FutureTask.get() numaralı telefonu arayabilirsin?

Bu, sonucu döndürür veya orijinal olarak atılan/yakalanan istisnayı içeren bir istisna atar. Görev tamamlanmadıysa dit engellenir ve zaman aşımı sağlama seçeneğiniz vardır.

isterim normalde müşterilerine sadece bir kez oluşturulan sırayla her FutureTask üzerine get() çağrı yerine isDone() anket bekliyoruz.

0

isDone() doğru olduğunda, yürütme sonucunu kontrol etmek için get() yöntemini çağırarak sonuca ulaşmak istersiniz. get() işlemi, bir sorun bulabileceğiniz nedenlerden oluşan ExecutionException'u atabilir.

+1

'isDone()' henüz yanlış olsa bile 'get()' diyebilirsiniz; bu durumda 'get()' tamamlanmasını bekler. – Pino