java – 针对不同任务的不同taskScheduler
发布时间:2020-12-15 02:19:52 所属栏目:Java 来源:网络整理
导读:我正在使用 Spring,我在我的应用程序中有几个@Scheduled类: @Componentpublic class CheckHealthTask { @Scheduled(fixedDelay = 10_000) public void checkHealth() { //stuff inside }}@Componentpublic class ReconnectTask { @Scheduled(fixedDelay = 1
我正在使用
Spring,我在我的应用程序中有几个@Scheduled类:
@Component public class CheckHealthTask { @Scheduled(fixedDelay = 10_000) public void checkHealth() { //stuff inside } } @Component public class ReconnectTask { @Scheduled(fixedDelay = 1200_000) public void run() { //stuff here } } 我希望第一个任务使用2个线程池,而第二个任务使用单个线程.我不希望第二个任务被卡住,因为第一个任务使用所有可用的线程,并且计算速度比fixedDelay时间慢. 我可以使用这样的配置类: @Configuration @EnableScheduling public class TaskConfig implements SchedulingConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.setScheduler(taskScheduler()); } @Bean public Executor taskScheduler() { ThreadPoolTaskScheduler t = new ThreadPoolTaskScheduler(); t.setPoolSize(2); t.setThreadNamePrefix("taskScheduler - "); t.initialize(); return t; } } 我不明白如何为每个@Scheduled组件定义不同的配置. 解决方法
第一个任务不需要2个线程的池.
如果全部使用固定延迟,则不需要为不同的任务分配不同的任务. fixedDelay的工作原理如下: @Scheduled(fixedDelay=5000) public void doSomething() { // something that should execute periodically }
每个任务只使用一个线程,如果你有两个线程,一个线程不会阻止另一个线程可用于另一个任务. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 利用android开源库android-gif-drawable加载gif格式图片
- mybatis interceptor 处理查询参数及查询结果的实例代码
- 来自Clojure的JavaFX副本
- java this的应用
- java – 在单个build.gradle中使用两组不同的依赖项编译源代
- 为什么使用相同的HashMap迭代器读取密钥时,Java HashMap获取
- Java垃圾收集器G1GC长期用于“对象复制”(疏散暂停)
- Java – int / long,float / double
- Classic ADO / ODBC / Oracle 10g EZConnect的连接字符串语
- java – 字节类型很奇怪