91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Future怎么在Java與Scala中使用

發布時間:2021-01-16 10:13:11 來源:億速云 閱讀:120 作者:Leah 欄目:編程語言

Future怎么在Java與Scala中使用?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

Future

很多同學可能會有疑問,Futrue跟異步編程有什么關系?從Future的表面意思是未來,一個Future對象可以看出一個將來得到的結果,這就和異步執行的概念很像,你只管自己去執行,只要將最終的結果傳達給我就行,線程不必一直暫停等待結果,可以在具體異步任務執行的時候去執行其他操作,舉個例子:

Future怎么在Java與Scala中使用

async work

我們現在在執行做飯這么一個任務,它需要煮飯,燒菜,擺置餐具等操作,如果我們通過異步這種概念去執行這個任務,比如煮飯可能需要比較久的時間,但煮飯這個過程又不需要我們管理,我們可以利用這段時間去燒菜,燒菜過程中也可能有空閑時間,我們可以去擺置餐具,當電飯鍋通知我們飯燒好了,菜也燒好了,最后我們就可以開始吃飯了,所以說,上面的“煮飯 -> 飯”,“燒菜 -> 菜”都可以看成一個Future的過程。

Java中的Future

在Java的早期版本中,我們不能得到線程的執行結果,不管是繼承Thread類還是實現Runnable接口,都無法獲取線程的執行結果,所以我們只能在線程執行的run方法里去做相應的一些業務邏輯操作,但隨著Java5的發布,它為了我們帶來了Callable和Future接口,我們可以利用這兩個接口的特性來獲取線程的執行結果。

Callable接口

通俗的講,Callable接口也是一個線程執行類接口,那么它跟Runnable接口有什么區別呢?我們先來看看它們兩個的定義:

1.Callable接口:

@FunctionalInterface
public interface Callable<V> {
 /**
  * Computes a result, or throws an exception if unable to do so.
  *
  * @return computed result
  * @throws Exception if unable to compute a result
  */
 V call() throws Exception;
}

2.Runnable接口:

@FunctionalInterface
public interface Runnable {
 public abstract void run();
}

從上面的定義,我們可以看出,兩者最大的區別就是對應的執行方法是否有返回值。Callable接口中call方法具有返回值,這便是為什么我們可以通過Callable接口來得到一個線程執行的返回值或者是異常信息。

Future接口

上面說到既然Callable接口能返回線程執行的結果,那么為什么還需要Future接口呢?因為Callable接口執行的結果只是一個將來的結果值,我們若是需要得到具體的結果就必須利用Future接口,另外Callable接口需要委托ExecutorService的submit提交任務去執行,我們來看看它是如何定義的:

<T> Future<T> submit(Callable<T> task);
 public <T> Future<T> submit(Callable<T> task) {
  if (task == null) throw new NullPointerException();
  RunnableFuture<T> ftask = newTaskFor(task);
  execute(ftask);
  return ftask;
 }

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江口县| 南岸区| 大新县| 廉江市| 九龙坡区| 罗平县| 焦作市| 贡觉县| 东兴市| 巢湖市| 古交市| 贵州省| 天气| 延吉市| 石渠县| 额敏县| 文水县| 三亚市| 鄯善县| 晋中市| 龙南县| 辉县市| 舟山市| 邹平县| 桐城市| 通州市| 镇沅| 乐至县| 建宁县| 肥西县| 易门县| 龙海市| 马龙县| 庆云县| 旬阳县| 宜春市| 江川县| 翁牛特旗| 沾益县| 威宁| 孙吴县|