并行处理多个任务(在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,并且更易于管理线程。