`

Scheduled Executor Service

阅读更多

Executor can return Executor, ExecutorService, and ScheduledExecutorService.

This is very, very usful Tiger new timer.

 

scheduler.scheduleAtFixedRate(new TimePrinter(System.out), 0, 10, SECONDS);

4 arguments:

1) Runable or Callable, which is the task scheduled to run.

2) 0. When the first time to run. 0 seconds later, means, immediately.

3) 10. When next time run. 10 seconds later.

4) What's time unit. The argument 0, and 10, all use the time unit SECONDs.

 

 

package test;

 

import java.io.PrintStream;

import java.util.Date;

import java.util.concurrent.Executors;

import java.util.concurrent.ScheduledExecutorService;

import java.util.concurrent.ScheduledFuture;

import static java.util.concurrent.TimeUnit.SECONDS;;

 

public class Thread5

{

      public static void main(String[] args)

      {

 

            // Get the scheduler

            //An alternative way to get scheduler is like this, you can simply replace with it

            //ScheduledThreadPoolExecutor scheduler = new ScheduledThreadPoolExecutor(10);

            ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();

 

            // Get a handle, starting now, with a 10 second delay

            final ScheduledFuture<?> timeHandle = scheduler.scheduleAtFixedRate(new TimePrinter(System.out), 0, 10, SECONDS);

 

            // Schedule the event, and run for 1 hour (60 * 60 seconds)

            scheduler.schedule(new Runnable()

            {

                  public void run()

                  {

                        timeHandle.cancel(false);

                  }

            }, 60 * 60, SECONDS);

 

      }//end of main

}

 

class TimePrinter implements Runnable

{

      private PrintStream out;

 

      public TimePrinter(PrintStream out)

      {

            this.out = out;

            System.out.println("a TimePrinter instance is created");

      }

 

      public void run()

      {

            out.printf("Current time: %tr%n", new Date());

      }

}

 

 

 

 

 

 

 

 

Summary:

 

Step 1) Get a ScheduledExecutorService --- Scheduler
Step 2) Tell the scheduler, which to run, how frequent, when to start. ---generate ScheduledFuture
Step 3) Start the Scheduler using schedule() method, wraping ScheduledFuture into Runnable, passing the Runnable to the schedule()

 

 

 

分享到:
评论

相关推荐

    Spring的 Scheduled任务调度.docx

    @Service public class PrintJob { @Scheduled(initialDelay=3000, fixedDelay = 10000) public void print() { // 打印任务逻辑 } } ``` 2.2. **Spring Boot 中的并行调度** 要实现并行调度,可以创建一...

    Java Spring多线程demo代码

    在"Java Spring多线程demo代码"中,可能包含使用`@Async`和`@Scheduled`注解的示例,以及如何配置和自定义`ThreadPoolTaskExecutor`和`ThreadPoolTaskScheduler`的代码。通过这些示例,你可以学习到如何在Spring应用...

    定时、异步

    Spring 3.0引入了`@Scheduled`注解来支持定时任务,并通过`@Async`注解实现了异步方法的调用。下面将详细解释这两个功能以及如何在实际应用中使用它们。 ### 定时任务(定时) Spring的定时任务功能主要基于`org....

    Spring3.0 mvc 定时器及多线程任务demo

    Spring提供了一个名为`@Scheduled`的注解,可以方便地将方法标记为定时任务。 1. **使用@Scheduled** - 首先,我们需要配置一个`TaskScheduler`或`ScheduledExecutorService`,并在Spring配置文件中声明。 - 然后...

    springboot 定时任务(线程配置,并行【同步】、异步等)

    这个注解会启动一个后台任务调度器,自动检测带有`@Scheduled`注解的方法并按需执行。 ```java @Configuration @EnableScheduling public class TaskConfig { // ... } ``` 接下来,我们来讨论线程配置。默认情况...

    Spring 异步多线程动态任务处理的使用心得

    @Service public class AsyncService { @Async("taskExecutor") // 指定使用哪个TaskExecutor public Future&lt;String&gt; executeAsyncTask() throws InterruptedException { Thread.sleep(2000); // 模拟耗时操作 ...

    java中spring里实现多线程

    @Service public class AsyncService { @Async public void asyncTask() { // 执行耗时操作 } } ``` 3. **ThreadPoolTaskScheduler**: 类似于`ThreadPoolTaskExecutor`,但`ThreadPoolTaskScheduler`主要...

    spring boot 多线程.docx

    这意味着如果存在多个定时任务(例如使用`@Scheduled`注解定义的任务),那么这些任务将会依次执行,即一个任务必须完全执行完毕后,下一个任务才能开始执行。这种执行方式可能会导致资源浪费,并且降低系统的并发...

    自己动手让springboot异步处理浏览器发送的请求(只需要使用ConcurrentLinkedQueue即可)

    @Service public class AsyncService { private final Queue&lt;String&gt; taskQueue = new ConcurrentLinkedQueue(); // 使用@Async标记为异步方法 @Async("asyncExecutor") public void processTask(String task)...

    springBoot模板.zip

    @Service public class UserService { @Autowired private UserRepository userRepository; public Pageable getUsers(Pageable pageable) { return userRepository.findAll(pageable); } } ``` 前端页面则...

    spring调度器

    在Spring配置文件中,你可以通过`&lt;task:executor&gt;`和`&lt;task:scheduler&gt;`元素定义`TaskExecutor`和`TaskScheduler`,并配置相关属性。在Spring Boot应用中,可以通过`@EnableScheduling`注解开启任务调度,然后使用`@...

    配置定时任务

    &lt;task:annotation-driven executor="executor" scheduler="scheduler"/&gt; ``` - `&lt;task:executor&gt;`: 定义一个任务执行器,用于执行定时任务。 - `&lt;task:scheduler&gt;`: 定义一个调度器,用于管理定时任务的调度。 - ...

    详解spring多线程与定时任务

    public Executor getAsyncExecutor() { ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor(); taskExecutor.setCorePoolSize(5); // 核心线程数 taskExecutor.setMaxPoolSize(20); // 最大线程...

    tomcat 定时作业

    @Scheduled(fixedRate = 60000) // 每60秒执行一次 public void executeTask() { // 你的任务代码 } } ``` 3. **在Tomcat的Context.xml中配置定时任务**: - 另一种方法是在Tomcat的Context配置文件中使用`...

    tasks-backend:在SpringBoot后台执行任务

    public Executor taskExecutor() { return Executors.newFixedThreadPool(10); // 创建线程池 } } ``` 然后在需要异步执行的方法上添加`@Async`: ```java @Service public class AsyncService { @Async ...

    一文总结Spring 注解及作用详解

    - **@Async**标记一个方法为异步执行,Spring将使用AsyncConfigurer配置的Executor来执行该方法。 7. **定时任务相关** - **@Scheduled**注解在方法上,可以实现定时任务,配合@EnableScheduling开启定时任务。 ...

Global site tag (gtag.js) - Google Analytics