牛客网项目——前置技术(十一):任务执行和调度


在这里插入图片描述
ExecutorService
ScheduledExecutorService

ThredPoolTaskExecutor
ThredPoolTaskScheduler

Spring Quartz

1. 分布式换环境下的定时任务问题

Schedule每隔一段时间做同样的事情,做的任务会重复
在这里插入图片描述
Quartz定时任务驱动的参数存到数据库里,通过排队加锁等这样的机制实现共享
在这里插入图片描述

2. JDK线程池

注意:main方法的线程如果不挂掉会一直等着它执行,但是juint方法中线程如果后面没有逻辑立马就结束了。解决方法启动之后等一下,让当前线程阻塞一会,但是sleep方法又经常抛异常,为了调起来方便把sleep封装一下

private void sleep(long m) {
   
    try {
   
        Thread.sleep(m);
    } catch (InterruptedException e) {
   
        e.printStackTrace();
    }
}

2.1 普通线程池 ExecutorService

  1. 通过newFixedThreadPool工厂实例化普通线程池
  2. 实现一个Runnable()方法的匿名实现,任务为logger.debug("Hello ExecutorService");
  3. submit(执行)十次
  4. sleep10000毫秒
    在这里插入图片描述

2.2 定时任务线程池ScheduledExecutorService

  1. 通过newScheduledThreadPool工厂实例化定时任务线程池
  2. 实现一个Runnable()方法的匿名实现,任务为logger.debug("Hello ExecutorService");
  3. 调用scheduledExecutorService的方法scheduleAtFixedRate,参数为:传入任务,延迟时间,时间间隔,数字单位:scheduledExecutorService.scheduleAtFixedRate(task, 10000, 1000, TimeUnit.MILLISECONDS);
  4. sleep10000毫秒
    在这里插入图片描述

3. Spring线程池

3.1 配置文件 application.properties

3.1.1 普通线程池

  1. core-size:核心线程数量
  2. max-size:自动扩容上限
  3. queue-capacity:队列容量,最大容量也不够用时,放入队列进行缓冲
# TaskExecutionProperties
spring.task.execution.pool.core-size=5
spring.task.execution.pool.max-size=15
spring.task.execution.pool.queue-capacity=100

3.1.2 定时任务线程池

  1. size:线程数量
# TaskSchedulingProperties
spring.task.scheduling.pool.size=5

3.2 配置类 ThreadPoolConfig

@Configuration
@EnableScheduling
@EnableAsync
public class ThreadPoolConfig {
   
}

3.3 Spring普通线程池:ThreadPoolTaskExecutor

  1. 注入普通线程池ThreadPoolTaskExecutor
  2. 实现一个Runnable()方法的匿名实现,任务为logger.debug("Hello ExecutorService");
  3. submit(执行)十次
  4. sleep10000毫秒
  5. 比JDK自带的线程池更灵活
    在这里插入图片描述
  6. </
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平什么阿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值