Java如何同时运行多个线程? ExecutorService 方法

已发表: 2021-10-09
Java如何同时运行多个线程? ExecutorService 方法

我们再来看看这个例子:Java 中如何获取任意 HTTP 端点的 Ping 状态?

您是否注意到该示例的线程执行? 是顺序的。 What if you have 500 endpoints? 我打赌你必须等待至少 5 分钟才能得到结果。 我敢肯定这不是最好的解决方案。

怎么办? 正确的问题是:

  • 如何同时运行多个线程?
  • Java如何实现多线程?
  • 如何在 Java 中运行不同的线程?
  • Java – 多线程编程教程在哪里?
  • 线程:如何使用多个线程来加速处理?

ExecutorService Approach是您的答案。

一个 Executor,提供管理终止的方法和可以生成 Future 以跟踪一个或多个异步任务的进度的方法。

可以关闭 ExecutorService,这将导致它拒绝新任务。 提供了两种不同的方法来关闭 ExecutorService。 shutdown()方法将允许先前提交的任务在终止之前执行,而shutdownNow()方法阻止等待的任务启动并尝试停止当前正在执行的任务。

终止后,执行者没有正在执行的任务,没有等待执行的任务,也没有新的任务可以提交。 应关闭未使用的 ExecutorService 以允许回收其资源。

方法 submit 通过创建和返回可用于取消执行和/或等待完成的 Future 扩展了基本方法Executor.execute ( java.lang.Runnable )。 方法invokeAnyinvokeAll执行最常用的批量执行形式,执行一组任务,然后等待至少一个或全部完成。 (类 ExecutorCompletionService 可用于编写这些方法的自定义变体。)

Executors 类为此包中提供的执行器服务提供工厂方法。

  • java - ExecutorService,如何等待所有任务完成?
  • Java ExecutorService 指南
  • Java线程池——ExecutorService解释

下面是一个简单的 Java 示例,它解释了usage of ExecutorService

输出:

现在检查结果。

它应该在几秒钟内。 我希望你觉得这有帮助。 尝试多次运行此程序,您可能会看到不同的结果,因为所有线程都在并行执行,并且谁获得了快速结果,您将在 Eclipse 控制台中看到结果。

如有任何疑问,请告诉我。