使用单个 ScheduledExecutorService 运行多个任务是否安全?

Nit*_*yan 5 java scheduling scheduledexecutorservice

我想用ScheduledExecutorService预定的方式导出一些数据。

在下面的代码中,我在 2 个不同的时间间隔内调用了 2 个不同的任务。ScheduledExecutorService当用户创建多个调度以导出多个数据(不同的报告)时,将有可能将多个任务安排在 1 中。

  1. 使用 singleScheduledExecutorService运行多个任务是否安全?

  2. service.scheduleAtFixedRate(runnable2, 0, 10, TimeUnit.SECONDS);如果用户删除了特定的日程安排,是否可以停止其中一项任务(例如)?

    public static void main(String... args) {        
          Runnable runnable = new Runnable() {          public void run() {
        // task to run goes here
          System.out.println("Every 5 sec: "+ new java.util.Date());
    
      }
    };
    
    Runnable runnable2 = new Runnable() {
          public void run() {
            // task to run goes here
              System.out.println("Every 10 sec: "+ new java.util.Date());
          }
        };
    ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
    service.scheduleAtFixedRate(runnable, 0, 5, TimeUnit.SECONDS);
    service.scheduleAtFixedRate(runnable2, 0, 10, TimeUnit.SECONDS);
    }
    
    Run Code Online (Sandbox Code Playgroud)