当前位置: 首页 > news >正文

论坛类型的网站怎么做重庆网站建设公司怎么做

论坛类型的网站怎么做,重庆网站建设公司怎么做,山东监理工程师考试最新消息,全国最新产品代理这里写目录标题 使用异步启动可能出现的问题排查代码中添加的定时任务步骤是否正确排查是否任务阻塞,如果定时任务出现异常阻塞后,将不会在次执行java中多个Scheduled定时器不执行为了让Scheduled效率更高,我们可以通过两种方法将定时任务变成…

这里写目录标题

  • 使用异步启动可能出现的问题
  • 排查代码中添加的定时任务步骤是否正确
  • 排查是否任务阻塞,如果定时任务出现异常阻塞后,将不会在次执行
  • java中多个@Scheduled定时器不执行
    • 为了让@Scheduled效率更高,我们可以通过两种方法将定时任务变成多线程执行:
      • 方法1、在启动类中配置TaskScheduler线程池大小:
      • 方法2、利用Spring提供的@Async注解和@EnableAsync注解
    • 方法三 主启动类添加线程
    • 或者使用配置类的形式
      • 定时任务测试

**是因为springboot默认给定时任务配置的线程池只有一个线程,当很多个定时任务都加了异步注解,没有配置线程池时,他们会因为只有一个线程出问题。
因为springboot的定时任务默认的线程池只有一个线程,就算加了异步,也不能使得一个任务结束下个任务才能开始,所以要配置一下或者重写定时任务的线程池,也可以将异步注解去掉,将异步注解去掉,springboot就会给定时任务配置一个固定的线程,不受干扰.
没有配置定时任务线程池时,默认用的是springboot分配给定时任务的线程池SimpleAsyncTaskExecutor,当一个服务定时任务过多时,会有问题比如你一个任务的周期是5秒,= 这5秒你要发送100条短信,用之前的固定的线程肯定没有问题,现在你改成多个线程。5秒如果你上个任务没有执行完成,那现在你任务的第二个周期到了还是会执行,如果没有控制可能会重复发=
**

使用异步启动可能出现的问题

会有问题比如你一个任务的周期是5秒, 这5秒你要发送100条短信,用之前的固定的线程肯定没有问题,现在你改成多个线程。5秒如果你上个任务没有执行完成,那现在你任务的第二个周期到了还是会执行,如果没有控制可能会重复发 

排查代码中添加的定时任务步骤是否正确

启动类上加 @EnableScheduling 注解
定时任务类上加@Component
定时方法上加@Scheduled

排查是否任务阻塞,如果定时任务出现异常阻塞后,将不会在次执行

解决:进行trycatch异常抛出

java中多个@Scheduled定时器不执行

原因是:@Scheduled注解会在默认情况下以单线程的方式执行定时任务。
这个“单线程”指两个方面:

如果一个定时任务执行时间大于其任务间隔时间,那么下一次将会等待上一次执行结束后再继续执行。
如果多个定时任务在同一时刻执行,任务会依次执行

为了让@Scheduled效率更高,我们可以通过两种方法将定时任务变成多线程执行:

方法1、在启动类中配置TaskScheduler线程池大小:

@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
taskScheduler.setPoolSize(10);//不配置默认是1
return taskScheduler;
}

方法2、利用Spring提供的@Async注解和@EnableAsync注解

@Component
@EnableAsync   //开启异步支持
public class TimedTask{
@Async // 对某个方法进行异步执行
@Scheduled(initialDelay = 1,fixedDelay=10000)//initialDelay 在容器启动后,延迟1毫秒再执行一次定时器
//fixedDelay  以上一次方法执行完开始算起,如上一次方法执行阻塞住了,那么直到上一次执行完,并间隔给定的时间后,执行下一次
public void aa() {
//执行业务逻辑
}@Async
@Scheduled(initialDelay = 1,fixedDelay=10000)
public void bb() {
//执行业务逻辑
}

方法三 主启动类添加线程

复制代码
@Beanpublic Executor executor1() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();executor.setThreadNamePrefix("test-schedule1-");executor.setMaxPoolSize(20);executor.setCorePoolSize(15);executor.setQueueCapacity(10);executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());return executor;}
复制代码

或者使用配置类的形式

@Configuration
@EnableAsync
public class ExecutorConfig {@Beanpublic Executor executor1() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();executor.setThreadNamePrefix("test-schedule1-");executor.setMaxPoolSize(20);executor.setCorePoolSize(15);executor.setQueueCapacity(10);executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());return executor;}@Beanpublic Executor executor2() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();executor.setThreadNamePrefix("test-schedule2-");executor.setMaxPoolSize(20);executor.setCorePoolSize(15);executor.setQueueCapacity(10);executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());return executor;}}

定时任务测试

@Component
@Slf4j
@EnableScheduling
public class test {@Async("executor1")  //指定线程池bean的名字  为什么是这个名字,可以自行学习下spring 关于bean的生命周期和创建过程@Scheduled(cron = "0 0/1 * * * ?")public void test() {System.out.println(Thread.currentThread().getName());}
}
复制代码
@Component
@Slf4j
@EnableScheduling
public class test1 {@Async@Scheduled(cron = "0 0/1 * * * ?")public void test1() {System.out.println(Thread.currentThread().getName() + "-------");}
}

执行结果
可以看到未指定线程池,默认就会使用的是SimpleAsyncTaskExecutor
在这里插入图片描述
也可以选择不配置异步,用同步,那么springboot就会给它分配固定的线程,不会被干扰
– 没有配置定时任务线程池时,默认用的是springboot分配给定时任务的线程池SimpleAsyncTaskExecutor,
在这里插入图片描述

http://www.yayakq.cn/news/358663/

相关文章:

  • 麻章手机网站建设公司ps个人主页网页设计模板
  • 网站首页引导页 模版网站建设 网页设计 的文章
  • 公司做的网站列入什么科目小程序登录功能
  • 深圳公司免费网站建设怎么样片多多免费观看高清
  • 深圳网站建设网站制作网站设计长沙优化网站厂家
  • 在线网站域名whois查询工具惠州seo网站推广
  • 做网站大概价格对于政务网站建设的建议
  • 怎样看网站建设国家重点项目建设库网站
  • 个人网站做商城吉林长春最新消息
  • 如何做网站登录界面汕头第一网
  • 网站建设 图片栏目介绍精美网页布局
  • 企业网站鉴赏网络行为管理系统
  • 最好设计网站建设中国建筑工程承包网
  • 网站设计提成多少钱非洲外贸平台有哪些
  • 在线网站seo优化企业网页如何制作
  • 深圳南山区住房和建设局网站上海租房网个人房源
  • 织梦网站模板安装微信插件大全下载
  • 广告公司网站模版免费国外ip地址
  • 手机网站建设西安网站维护兼职
  • 工商局网站做年报江西 商城网站开发
  • 乡镇网站建设内容规划wordpress高级视频教程
  • 交互型网站宝山青岛网站建设
  • 手机网站实例wordpress 表单校验
  • 51制作工厂网站在线观看无需选择网站建设 gei l f
  • 门户网站模板源代码wordpress 神箭手
  • 网站广告的优势品牌注册怎么注册
  • 合肥网站建设价格彩票投资理财平台网站建设
  • 江阴哪里有做网站推广分类信息免费发布网
  • 科技公司 网站模板网站建设咨询服务
  • php导航网站网页设计工作室长沙