多執行緒學習六:Future與FutureTask
阿新 • • 發佈:2018-12-21
FutureTask是Future介面的一個唯一實現類,可以作為Runnable被執行緒執行,也可以作為Future得到Callable的返回值。 Future就是對於具體的Runnable或者Callable任務的執行結果進行取消、查詢是否完成、獲取結果。必要時可以通過get方法獲取執行結果,該方法會阻塞直到任務返回結果。Future類位於java.util.concurrent包下,它是一個介面。本文主要闡述Future介面中宣告的5個方法的作用:
- Cancel(boolean mayInterruptIfRunning)
此方法用來取消任務,如果取消任務成功則返回true,如果取消任務失敗則返回false。引數mayInterruptIfRunning表示是否允許取消正在執行卻沒有執行完畢的任務 - isCancelled()
此方法表示任務是否被取消成功,如果在任務正常完成前被取消成功,則返回 true。 - isDone()
此方法表示任務是否已經完成,若任務完成,則返回true; - get()
此方法用來獲取執行結果,這個方法會產生阻塞,會一直等到任務執行完畢才返回; - get(long timeout, TimeUnit unit)
此方法用來獲取執行結果,如果在指定時間內,還沒獲取到結果,就直接返回null。