java中最简单的方法是在单独的线程中运行多个方法并等待所有方法完成?

dam*_*nix 2 java multithreading function

我想要一个在不同线程中运行2个或更多方法的方法.我想确保在完成所有线程之前该方法不会完成.

Mar*_*nik 6

最好的方法是利用Executor Service API来管理线程池,而不是自己开始一个开放式的线程数.

ExecutorService pool = Executors.newCachedThreadPool();
for (Runnable r : new Runnable[] {
    new R() { void r() { myMethod1(); }},
    new R() { void r() { myMethod2(); }},
})
  pool.execute(r);
pool.shutdown();
pool.awaitTermination(60, TimeUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)
abstract class R implements Runnable
  public final void run() { r(); }
  abstract void r();
}
Run Code Online (Sandbox Code Playgroud)

请注意,不建议坚持在其自己的单独线程中运行的每个方法.线程非常重量级(每个都分配一个完整的调用堆栈),并且随着线程数增加远远超过可用处理器核心数量,性能实际上会降低.