我使用的是Executors.newSingleThreadExecutor()
,javadoc表示: tasks are guaranteed to execute sequentially
。所以我認爲我的List<Future<String>> futures = new ArrayList<Future<String>>()
將被命令,但事實並非如此。Java執行器的執行策略
列表中的第一個元素是第3個線程的結果...
ExecutorService pool = Executors.newSingleThreadExecutor();
List<Future<String>> futures = new ArrayList<Future<String>>();
for (int i=0;i<x.size();i++){
futures.add(pool.submit(new ThreadTest()));
}
pool.shutdown();
pool.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS);
String test= futures.get(0).get(); <-- The result of the 3rd thread
String test1 = futures.get(1).get(); <-- The result of the 5th thread
.....
我沒有得到的邏輯。
有什麼想法?
謝謝
順序只意味着一次一個。措詞不能保證任何關於訂購。 –