根据您的描述,最简单的解决方案是让线程保存它们的结果,并让另一个线程按照您想要的顺序写入它们。e、 g
int threads = Runtime.getRuntime().availableProcessors();
ExecutorServer es = Executors.newFixedThreadPool(threads);
List<Future<String>> results = new ArrayList<>();
for (int i = 0; i < tasks; i++)
results.add(es.submit(new Callable<String>() {
public String call() {
// task which returns a String
}
});
try (PrintWriter fw = new PrintWriter("output.txt")) {
for (Future f : results)
fw.println(f.get());
}
# 1 楼答案
嗯,线程实际上没有顺序,所以您需要通过编程为它们创建某种类型的池队列
虽然我不知道Java1.7是否在Java中添加了新的东西。同时上课。。这可能会帮你实现你想要的
但对于Java1.6及以下版本,必须有一个队列来逐个管理线程,以维持JVM不会执行的实际顺序
# 2 楼答案
根据您的描述,最简单的解决方案是让线程保存它们的结果,并让另一个线程按照您想要的顺序写入它们。e、 g
如你所见