{"id":256,"date":"2024-11-03T06:43:52","date_gmt":"2024-11-02T22:43:52","guid":{"rendered":"https:\/\/joson.cc\/?p=256"},"modified":"2024-11-03T06:43:53","modified_gmt":"2024-11-02T22:43:53","slug":"completablefuture-%e7%bb%93%e5%90%88-java21-%e8%99%9a%e7%ba%bf%e7%a8%8b","status":"publish","type":"post","link":"https:\/\/joson.cc\/?p=256","title":{"rendered":"CompletableFuture \u7ed3\u5408 java21 \u865a\u7ebf\u7a0b"},"content":{"rendered":"\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">try( ExecutorService executorService = Executors.newVirtualThreadPerTaskExecutor() ) {\n            List&lt;CompletableFuture&lt;Void>> f = list.stream().map(item ->\n                    CompletableFuture.runAsync(() -> {\n                        try {\n                            processOrder(item);\n                        } catch (InterruptedException e) {\n                            throw new RuntimeException(e);\n                        }\n                    }, executorService)\n            ).toList();\n            CompletableFuture.allOf(f.toArray(new CompletableFuture[0])).join();\n}<\/pre>\n\n\n\n<p>\u4f7f\u7528 Executors.newVirtualThreadPerTaskExecutor() \u4f5c\u4e3a CompletableFuture.runAsync\u7684 Executor \u5373\u53ef\u3002\u5bf9\u4e8e\u8001\u4ee3\u7801\u65e0\u75db\u66f4\u6539<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4f7f\u7528 Executors.newVirtualThreadPerTaskExecutor() \u4f5c\u4e3a Compl&hellip; <a class=\"more-link\" href=\"https:\/\/joson.cc\/?p=256\">\u7ee7\u7eed\u9605\u8bfb<span class=\"screen-reader-text\">CompletableFuture \u7ed3\u5408 java21 \u865a\u7ebf\u7a0b<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[28],"class_list":["post-256","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-java","entry"],"_links":{"self":[{"href":"https:\/\/joson.cc\/index.php?rest_route=\/wp\/v2\/posts\/256","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/joson.cc\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/joson.cc\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/joson.cc\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/joson.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=256"}],"version-history":[{"count":1,"href":"https:\/\/joson.cc\/index.php?rest_route=\/wp\/v2\/posts\/256\/revisions"}],"predecessor-version":[{"id":257,"href":"https:\/\/joson.cc\/index.php?rest_route=\/wp\/v2\/posts\/256\/revisions\/257"}],"wp:attachment":[{"href":"https:\/\/joson.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=256"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/joson.cc\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=256"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/joson.cc\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=256"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}