springboot schedule 异步多线程,springboot scheduled不执行
00-1010问题描述原因分析:解决方案:补充:
00-1010在一个SpringBoot中使用调度任务时,发现某个任务的执行占用了大量资源,会导致其他任务的失败。类似于下面的模拟场景,test1定时任务模拟有五秒的执行时间,会同步影响test2任务的执行,导致test2任务每五秒执行一次。
@ Scheduled(fixed rate=1000)public void test1()抛出interrupted exception { log . info(thread . current thread()。getName() task 01 );thread . sleep(5000);} @ Scheduled(fixed rate=2000)public void test 2(){ log . info(thread . current thread()。getName() task 02 );}
10月10-1010日,查阅相关资料后发现,调度的调度任务只有一个默认线程号。调度任务时,会同步调度,先执行一个,后执行另一个。这是造成这个问题的直接原因。
目录
@ Bean public task scheduler task scheduler(){ ThreadPoolTaskScheduler task scheduler=new ThreadPoolTaskScheduler();//设置线程数task scheduler . setpoolsize(50);返回taskScheduler}添加一个配置,将TaskScheduler线程数设置为倍数,这样再次执行时,异步执行,各个调度的任务互不影响。
00-1010以下Java的util包中包含的TimerTask也可用于执行计划任务。在以下参数中,TimerTask是执行的任务,0表示第一次延迟0秒,3000表示每3000毫秒执行一次。
//true表示调度任务创建为守护线程Timer Timer=new Timer(true);//timer . scheduleatfixedrate();timer . schedule(new TimerTask(){ @ Override public void run(){ logger . info(thread . current thread()。getName() * * * * * * * * * * * ftpGaFilePrefix);} }, 0, 3000);这就是关于SpringBoot中调度单线程执行的这篇文章。有关SpringBootScheduled单线程的更多信息,请搜索以前关于流行IT的文章或继续浏览下面的相关文章。我希望你以后能更多地支持流行音乐!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。