并行处理多个任务(在java-8中)
这个方法有什么问题吗并行处理多个任务(在java-8中),java,java-8,Java,Java 8,这个方法有什么问题吗 public static void runinParallel(final List<Runnable> tasks){ tasks.parallelStream().forEach(t -> t.run()); } publicstaticvoid并行运行(最终列表任务){ tasks.parallelStream().forEach(t->t.run()); } 假设并行执行任务是安全的。您可以通过任务列表和ExecutorServic
public static void runinParallel(final List<Runnable> tasks){
tasks.parallelStream().forEach(t -> t.run());
}
publicstaticvoid并行运行(最终列表任务){
tasks.parallelStream().forEach(t->t.run());
}
假设并行执行任务是安全的。您可以通过任务列表和ExecutorService执行类似的操作
List<Task> tasks = new ArrayList<Task>();
ExecutorService threadPool = Executors.newFixedThreadPool(5);
for (Task t : tasks) {
threadPool.submit(t);
}
然后记得关闭线程池
threadPool.shutdown();
是的,你能做到。这是一种更实用的方法,但请记住,您将无法控制调用的线程。而不是<代码> Runnaby<代码>,考虑使用<代码> java .UTI.Orth.Enguty
public static void runinParallel(final List<Future> tasks){
tasks.parallelStream().forEach(t -> { threadPool.submit(t);
// collect the tasks in a collection and use it for future references
} );
}
publicstaticvoid并行运行(最终列表任务){
tasks.parallelStream().forEach(t->{threadPool.submit(t);
//收集集合中的任务,并将其用于将来的引用
} );
}
首先,无法控制并行度。另一方面,它不会编译。如果您正在执行线程并使用java 8,您是否考虑过CompletableFuture
它是运行线程的更有用的api,并且更易于管理线程。