`
zsjg13
  • 浏览: 145752 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

调度executors

阅读更多

the command-line runners can be used as a place to start the scheduled executor thread pool in order to run the worker threads in intervals.虽然这是可行的,但Spring为我们提供了一个更简洁的配置来完成同样

的目标:@EnableScheduling

 

先给Application类加上@EnableScheduling注解

@SpringBootApplication

@EnableScheduling

public class BookPubApplication {

 

@Bean

public StartupRunner schedulerRunner() {

return new StartupRunner();

}

 

public static void main(String[] args) {

SpringApplication.run(BookPubApplication.class, args);

}

 

}

 

@Scheduled只能用在无参方法上

public class StartupRunner implements CommandLineRunner {

    Log logger = LogFactory.getLog(getClass());

 

    @Autowired

    private BookRepository bookRepository;

 

    @Override

    public void run(String... args) throws Exception {

        logger.info("Number of books: " + bookRepository.count());

    }

 

    @Scheduled(initialDelay = 1000, fixedRate = 3000)

    public void run() {

        logger.info("Number of books: " + bookRepository.count());

    }

}

 

@EnableScheduling不是一个Spring Boot注解,而是一个Spring Context模块注解。它和

@SpringBootApplication以及@EnableAutoConfiguration一样都是元注解。它在内部利用@Import

导入了SchedulingConfiguration,而它又会创建ScheduledAnnotationBeanPostProcessor,接着

扫描那些存在@Scheduled注解的Spring Beans,对于每一个无参的被注解的方法,相应的executor

thread pool会被创建出来。

分享到:
评论

相关推荐

    顶层接口Executors详解

    顶层接口Executors详解 Executors框架是Java语言中用于异步执行任务的高级接口,旨在提供一个高效、灵活、可扩展的任务执行机制。该框架提供了一个两级调度模型,第一级是用户级的调度器,第二级是操作系统内核的...

    Executor,Executors,ExecutorService比较.docx

    - **newScheduledThreadPool(int corePoolSize)**:创建一个定长的调度线程池,支持定时及周期性任务执行。它可以安排任务在指定延迟后运行,或者定期执行。 - **newSingleThreadExecutor()**:创建一个单线程的...

    Java调度原理及使用

    如清单2所示,可以通过`Executors.newScheduledThreadPool`创建一个调度线程池,然后调用`scheduleAtFixedRate`或`scheduleWithFixedDelay`方法安排任务。这种方式更灵活,性能更好,但需要更精细的管理,例如关闭...

    操作系统调度算法java

    executor = Executors.newScheduledThreadPool(1); } public void addProcess(Process process) { readyQueue.addLast(process); } public void start() { while (!readyQueue.isEmpty()) { Process ...

    java 实现调度器

    在Java编程语言中,实现调度器是一个常见的任务,它涉及到定时执行特定的代码段或任务。这通常是通过Java中的`java.util.Timer`类或者`java.util.concurrent.ScheduledExecutorService`来实现的。这两个工具提供了...

    JAVA定时任务调度

    ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); Runnable task = () -> System.out.println("Task executed"); ScheduledFuture<?> future = executor.scheduleAtFixedRate(task, ...

    5_Executors源码阅读1

    这些内部类实现了ExecutorService接口,提供了调度和执行任务的能力。例如,`newFixedThreadPool`方法创建`ThreadPoolExecutor`实例时,传入了核心线程数、线程工厂和拒绝策略等参数,确保线程池的行为符合预期。 ...

    几种任务调度的Java实现方法与比较

    ### 几种任务调度的Java实现方法与比较 在现代软件开发中,任务调度是确保程序按照预定时间或周期执行特定任务的关键技术之一。本文将详细介绍三种常用的Java任务调度实现方式:`Timer`, `ScheduledExecutorService...

    银行业务调度系统

    用Java编写银行业务调度系统,附主类: package com.isoftstons.interview.bank; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; public class Mainlass { public Mainlass() {...

    几种任务调度的用法

    ScheduledExecutorService executor = Executors.newScheduledThreadPool(2); Runnable task = () -> System.out.println("Hello from scheduled executor!"); // 定义任务从现在开始1秒后执行,每隔1秒执行一次 ...

    C++ library for executors.zip

    执行器是C++并发编程中的一个重要组件,它们负责调度和执行任务,有助于管理线程和资源。在这个库中,可能包含了一系列类和函数,用于高效地管理和执行异步任务。 在C++中,执行器可以被看作是一种框架,它定义了...

    java实现操作系统进程之间的调度

    ExecutorService executor = Executors.newPriorityThreadPool(); for (Runnable task : tasks) { Thread t = new Thread(task); t.setPriority(...); // 设置优先级 executor.execute(t); } ``` 4. **轮转...

    Java并发编程中使用Executors类创建和管理线程的

    对于需要定时调度的任务,如心跳检测、定时发送邮件等,这是理想的选择。 5. **newWorkStealingPool(int parallelism)**:Java 7及以上版本引入,创建一个使用工作窃取算法的线程池。每个工作线程都有自己的任务...

    xxl job源码分析

    三、xxl-job-executors-sample:主要负责执行器的初始化工作,执行器会主动注册到调度中心,并以bean的方式注入用户线下编辑好的任务。 在进行xxl-job源码分析之前,有些预备知识点是必须了解的: 1、quartz的使用...

    Java并发编程中使用Executors类创建和管理线程的用法

    `Executors` 类简化了线程池的创建和线程的调度,使得开发者能够更高效地利用系统资源,特别是在处理大量并发任务时。 首先,`Executors` 类提供了不同类型的线程池创建方法: 1. `newCachedThreadPool()` 创建一...

    Spring的 Scheduled任务调度.docx

    return Executors.newScheduledThreadPool(10); } } ``` 这样,任务将在自定义的线程池中并行执行。 2.3. **Spring Boot 中的异步并行调度** 如果你想让每个定时任务都在独立的线程中异步执行,除了上述的...

    java并发编程:Executor、Executors、ExecutorService.docx

    ExecutorService是Executor的子接口,提供了更丰富的功能,包括生命周期管理、任务调度以及返回Future对象的能力。ExecutorService允许我们优雅地关闭服务,例如通过调用`shutdown()`方法,它会停止接受新的任务并...

    Java调度原理及使用.docx

    Java任务调度是编程中一种重要的技术,用于自动化执行特定任务,如定时数据备份、系统监控、日志清理等。在Java中,有多种方式可以实现任务调度,包括基础的`Timer`类、`ScheduledExecutorService`接口以及第三方库...

    藏经阁-RESOURCE AWARE SCHEDULING IN A.pdf

    Storm 的 topology 由 Spouts、Bolts 和 Executors 组成,其中 Spouts 是信息源,Bolts 是数据处理操作符,Executors 是-worker 进程中执行组件逻辑的线程。 Storm 的架构由 Master Node、Cluster Coordination、...

    Python任务调度利器之APScheduler详解

    **Python任务调度利器——APScheduler详解** 任务调度在软件开发中扮演着至关重要的角色,它允许我们安排任务的执行计划,包括何时执行以及如何执行。常见的任务调度应用场景有: 1. **离线作业调度**:根据时间...

Global site tag (gtag.js) - Google Analytics