Beni bir zaman aşımına uğrayan bir "Future.get" in beklemeyeceğini belirten bazı belgelere işaret edebilir misiniz?0 zaman aşımı ile future.get davranışı
java.util.concurrent.Future
için API belgeleri, future.get(0, unit)
davranışını açık bir şekilde ifade etmez. Kendi başına ayakta durduğumda, "Verilen zamanın çoğunda gerekli olursa ..." ifadesi, bu çağrının hiç beklemeyeceğini ima eder, fakat Object.wait(0)
(sonsuz bekleyiş) uzun süredir devam eden davranışı göz önüne alındığında, bağımlı olduğum için gerginim. (yani. FutureTask
) Ben aşımı Ben 0.
olduğunda Future
bu özel uygulama beklememesi anlamına bakın bazı JDK sağlanan sınıfların kaynağını Tarama future.get(0, unit)
bir "hayır bekle" davranışı üzerinde d
deyin, ama bir Gelecek konusunda gerginim sonsuz bir bekleme olarak, bunun yerine, açıkça bunu Devam etsin diye beklediğiniz şekilde kodlanmış ettik uygulanması: Eğer yardımcı olur bazı kodlara işaret edebilir
long timeout = Math.max(until - now, 0);
if(timeout > 0 || future.isDone()){
return future.get(timeout, TimeUnit.MILLISECONDS);
} else {
throw TimeoutException();
}
@skaffman Etiket düzeltmesi için teşekkürler. – mwhidden