<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Java `Future`示例 > 原文: [https://javatutorial.net/java-future-example](https://javatutorial.net/java-future-example) 異步計算的結果稱為`Future`,更具體地說,它具有此名稱,因為它(結果)將在將來的中稍后的時間點完成。 創建異步任務后,將創建將來的對象。 提供了許多方法來幫助檢索結果(使用`get`方法(這是唯一的檢索方法)),使用`cancel`方法進行取消以及檢查是否檢查結果的方法。 任務成功完成或被取消。 ![java-featured-image](https://img.kancloud.cn/05/3e/053ee0bb59842d92359246c98f815e0c_780x330.jpg) `Future`的主要優點在于,它使我們能夠同時執行其他進程,同時等待`Future`中嵌入的主要任務完成。 這意味著當我們面對大型計算時,使用`Future`是個好主意。 ## 方法 1. `boolean cancel(boolean mayInterruptIfRunning)` 2. `V get()` 3. `V get(long timeout, TimeUnit unit) ` 1. 這與上面的 get 方法不同,因為在此方法中,指定了超時作為等待條件 4. `boolean isCancelled()` 5. `boolean isDone()` ## 使用`get(timeout, unit)`的`Future`的基本實現 ```java import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; public class FutureDemo { public static void main(String[] args) { ExecutorService executorService = Executors.newSingleThreadExecutor(); Future<String> future = executorService.submit(() -> { Thread.sleep(5000); return "Done"; }); try { while(!future.isDone()) { System.out.println("Task completion in progress..."); Thread.sleep(500); } System.out.println("Task completed!"); String result = future.get(3000, TimeUnit.MILLISECONDS); // that's the future result System.out.println(result); executorService.shutdown(); } catch (InterruptedException e) { } catch (ExecutionException e) { } catch (TimeoutException e) { // this will be thrown if the task has not been completed within the specified time future.cancel(true); // if this task has not started when cancel is called, this task should never run future.isDone(); // will return true future.isCancelled(); // will return true } } } ``` ## 輸出: ```java Task completion in progress... Task completion in progress... Task completion in progress... Task completion in progress... Task completion in progress... Task completion in progress... Task completion in progress... Task completion in progress... Task completion in progress... Task completion in progress... Task completed! Done ``` ## 細分 在`ExecutorService`上調用`commit()`方法,返回`Future`。 現在有了`Future`,我們可以調用上面的方法了。 但是,您應該特別注意的是,它在提交的任務正在“運行”時打印“正在完成任務…”。 如果任務沒有在指定的時間內完成(如注釋所示),將拋出`TimeoutException catch`。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看