java - ScheduledExecutorService 的多个任务

标签 java multithreading

我目前有一个类(class)列表,每个类(class)都启动一个这样的调度程序:

private ScheduledFuture<?> myTask;
private ScheduledExecutorService scheduler;

public startScheduler() {
scheduler = Executors.newScheduledThreadPool( 1 );
    myTask = scheduler.scheduleAtFixedRate(new Runnable() {
          // doing work here
     },
          delay,
          interval,
          TimeUnit.MILLISECONDS );
}

所以每个类(class)基本上都会启动自己的调度程序,并且只有一个任务。但据我所知,调度程序可以并行执行和运行更多任务。任务(或在我当前的程序中,调度程序)具有不同的延迟和间隔值,并且我不知道启动的调度程序的数量(因为用户可以启动新的并停止运行)。所有调度器并行运行。那么我应该更改我的代码以便只使用一个调度程序吗?我应该更喜欢“CachedThreadPool”吗?

最佳答案

是的,您可以只使用一个池来安排所有任务。此外,如果您需要像当前那样按时间间隔安排任务的能力,您应该坚持使用 newScheduledThreadPool,因为 newCachedThreadPool 仅返回一个 ExecutorService 接口(interface)而不是 ScheduledExecutorService

关于java - ScheduledExecutorService 的多个任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9170568/

相关文章:

java - Tomcat 如何加载不同的 war 文件?

Java 8 : How to perform timeout for SSLSocket. 开始握手()

java - 线程安全惰性初始化实现单例的两种方式

java - 使用 JLabel 显示所选图像文件时出现的问题

java - 自定义约束 validator 注解

java - JProgressBar 不更新,找不到线索

java - Java 中的线程和计算

python - 如何启动协程并继续执行同步任务?

java - if-else-if梯形图的两个部分中的条件语句为true

JavaFX检测场景外的鼠标移动