FutureTask是Java中一個用于異步執行任務的類,它的工作原理可以簡單地歸納為以下幾步:
- 創建一個FutureTask對象,并傳入一個Callable或Runnable任務作為參數。
- 調用FutureTask的get()方法來獲取任務執行結果。如果任務還沒有完成,則get()方法會阻塞當前線程,直到任務完成并返回結果。
- 當調用get()方法時,如果任務已經完成,get()方法會立即返回結果;如果任務還未完成,get()方法會等待任務的完成,并返回結果。
- 如果任務已經完成,再次調用get()方法會立即返回結果,而不會再次執行任務。這樣可以避免重復執行任務。
- FutureTask還提供了cancel()方法用于取消任務的執行。取消任務后,再次調用get()方法會拋出CancellationException異常。
總結來說,FutureTask的工作原理就是封裝一個異步執行的任務,并提供方法來獲取任務的執行結果和取消任務的執行。它通過使用內部的線程和同步機制,實現了在任務未完成時阻塞獲取結果的功能。