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

时间:2016-11-22 09:03:11

标签: java scheduling scheduledexecutorservice

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

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

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

  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);
    }
    

0 个答案:

没有答案