执行人

下面解释的不同类型的 Threadpool 和队列来自[oracle documentation] [1]和[Jakob Jenkov] [2]博客的信息和知识,你可以在 java 中学到很多关于并发性的知识。

不同类型的 ThreadPools

SingleThreadExecutor: Executor,它使用单个工作线程操作无限制队列,并在需要时使用提供的 ThreadFactory 创建新线程。与其他等效的 newFixedThreadPool(1, threadFactory)不同,保证返回的执行程序不可重新配置为使用其他线程。

FixedThreadPool: 线程池,它重用在共享的无界队列中运行的固定数量的线程,使用提供的 ThreadFactory 在需要时创建新线程。在任何时候,最多 nThreads 线程将是活动的处理任务。如果在所有线程都处于活动状态时提交了其他任务,则它们将在队列中等待,直到线程可用。如果任何线程由于在关闭之前执行期间的故障而终止,则如果需要执行后续任务,则新线程将取代它。池中的线程将一直存在,直到它被明确关闭。

CachedThreadPool: 根据需要创建新线程的线程池,但在它们可用时将重用先前构造的线程,并在需要时使用提供的 ThreadFactory 创建新线程。

SingleThreadScheduledExecutor: 单线程执行程序,可以调度命令在给定延迟后运行,或定期执行。 (但请注意,如果此单个线程由于在关闭之前执行期间的故障而终止,则在需要执行后续任务时将使用新的线程。)保证任务顺序执行,并且不会有多个任务处于活动状态在任何给定的时间。与其他等效的 newScheduledThreadPool(1, threadFactory)不同,保证返回的执行程序不可重新配置以使用其他线程。

ScheduledThreadPool: 线程池,可以调度命令在给定延迟后运行,或定期执行。不同类型的工作队列