日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java8 supplyasync_java – 为什么CompletableFuture.supplyAsync成功随...

發布時間:2024/7/5 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java8 supplyasync_java – 为什么CompletableFuture.supplyAsync成功随... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我是Java 8中lambda和異步代碼的新手.我不斷得到一些奇怪的結果……

我有以下代碼:

import java.util.concurrent.CompletableFuture;

public class Program {

public static void main(String[] args) {

for (int i = 0; i < 100; i++) {

String test = "Test_" + i;

final int a = i;

CompletableFuture cf = CompletableFuture.supplyAsync(() -> doPost(test));

cf.thenRun(() -> System.out.println(a)) ;

}

}

private static boolean doPost(String t) {

System.out.println(t);

return true;

}

}

實際代碼要長得多,因為doPost方法會將一些數據發布到Web服務.但是,我能用這個簡單的代碼復制我的問題.

我想讓doPost方法執行100次,但出于性能原因而異步(為了將數據推送到Web服務比執行100次同步調用更快).

在上面的代碼中,’doPost’方法是隨機運行的,但總是不超過20-25次.沒有例外.似乎某些線程處理機制默默地拒絕創建新線程并執行它們的代碼,或者線程在沒有崩潰程序的情況下靜默崩潰.

我還有一個問題,如果我向doPost方法添加比上面顯示的更多的功能,它會達到一個方法,該方法只是默默地破壞.在這種情況下,我嘗試在return語句之前添加一個System.out.println(“test”),但它永遠不會被調用.循環100次的循環確實運行了100次迭代.

至少可以說,這種行為令人困惑.

我錯過了什么?為什么作為supplyAsync的參數提供的函數運行看似隨機的次數?

編輯:只是想指出情況與問題中的情況不完全相同,因為這個問題涉及任意深度嵌套的期貨,而這一問題涉及平行的問題.然而,他們失敗的原因幾乎完全相同.這些案件看起來很明顯,值得向我提出不同的問題,但其他人可能不同意……

總結

以上是生活随笔為你收集整理的java8 supplyasync_java – 为什么CompletableFuture.supplyAsync成功随...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。