我有一個線程池爲10的執行程序服務,我預計會得到10個以3秒分隔的打印語句,但我只收到一條打印輸出語句。我通過了10作爲參數,所以我期待10個線程運行。我如何檢索10個未來的對象?執行程序不返回10個未來對象
public class Demo {
private static final ExecutorService executor = Executors.newFixedThreadPool(10);
public static void main (String[] args) throws ExecutionException, InterruptedException {
ArrayList futureObjects = new ArrayList();
Callable<Integer> task =() -> {
try {
TimeUnit.SECONDS.sleep(3);
return 123;
}
catch (InterruptedException e) {
throw new IllegalStateException("task interrupted", e);
}
};
System.out.println("Before execution of threads");
Future<Integer> future = executor.submit(task);
Integer result = future.get();
futureObjects.add(future.get());
System.out.println("result: " + result);
for(Object futures : futureObjects){
System.out.println("Futures in ArrayList: " + futures);
}
}
}
我得到的輸出是:
之前線程的執行
結果:123
期貨的ArrayList:123
你看過我的回答嗎? – developer
是的,謝謝,似乎睡眠只是在開始時暫停,然後一次性吐出10個未來物體的所有輸出。這只是一個觀察而已。 –