專案中進行條件初始化使用執行緒池
阿新 • • 發佈:2022-04-06
public class Executor { public static void main(String[] args) throws ExecutionException, InterruptedException { ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 10, 12, TimeUnit.SECONDS, new ArrayBlockingQueue<>(5), new ThreadPoolExecutor.CallerRunsPolicy()); Map paramMap=new HashMap(); //在進行條件初始化時(format時)可以使用執行緒池 //初始化條件1 CompletableFuture<Void> future1 = CompletableFuture.runAsync(() -> { paramMap.put("p1","你若執行完了等我"); }, executor); //初始化條件2 CompletableFuture<Void> future2 = CompletableFuture.runAsync(() -> { paramMap.put("p2","你若執行完了等我"); }, executor); //讓兩個執行緒都等各自執行完畢 CompletableFuture<Void> allFutureWait = CompletableFuture.allOf(future1, future2); Void unused = allFutureWait.get(); System.out.println("paramMap="+paramMap); } }