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

做微信的网站有哪些做收费课程网站

做微信的网站有哪些,做收费课程网站,中淼建设工程有限公司网站,网站源码下载安全吗Scheduled注解的作用是什么 Scheduled注解用于标记一个方法为定时任务方法。Spring 会按照指定的时间规则自动调用该方法 Scheduled(fixedRate 5000) public void doTask() {System.out.println(定时任务执行了); } 上述代码表示每隔 5 秒执行一次 doTask() 方…Scheduled注解的作用是什么 Scheduled注解用于标记一个方法为定时任务方法。Spring 会按照指定的时间规则自动调用该方法 Scheduled(fixedRate 5000) public void doTask() {System.out.println(定时任务执行了); } 上述代码表示每隔 5 秒执行一次 doTask() 方法 Scheduled注解有哪些常用的配置参数 fixedRate 固定速率执行单位是毫秒 例如Scheduled(fixedRate 5000) 表示每隔 5 秒执行一次无论上一次任务是否完成 fixedDelay固定延迟执行单位是毫秒 例如Scheduled(fixedDelay 5000) 表示上一次任务完成后延迟 5 秒再执行下一次任务 cron使用 Cron 表达式定义任务执行时间 例如Scheduled(cron 0 0/5 * * * ?) 表示每隔 5 分钟执行一次 initialDelay初始延迟时间单位是毫秒 例如Scheduled(initialDelay 10000, fixedRate 5000) 表示首次延迟 10 秒后执行之后每隔 5 秒执行一次 如何启用Shceduled注解 在配置类上添加EnableScheduling Configuration EnableScheduling public class AppConfig { } Sheduled注解的任务是单线程执行的吗 是的默认情况下Sheduled注解的任务是单线程执行的。所有任务共享一个线程池如果某个任务执行时间过长可能会阻塞其他任务的执行。 解决方案 使用Async注解将任务标记为异步执行。 自定义线程池配置 Tasksheduler 如何自定义Sheduled任务的线程池 可以通过实现 SchedulingConfigurer接口自定义任务调度器的线程池 Configuration EnableScheduling public class SchedulerConfig implements SchedulingConfigurer {Overridepublic void configureTasks(ScheduledTaskRegistrar taskRegistrar) {taskRegistrar.setScheduler(taskExecutor());}Bean(destroyMethod shutdown)public Executor taskExecutor() {return Executors.newScheduledThreadPool(10); // 自定义线程池大小} } Scheduled注解的任务可以动态修改执行时间吗 默认情况下Scheduled 注解的任务执行时间是静态的无法动态修改。如果需要动态调整任务执行时间可以使用以下方法 使用 ScheduledTaskRegistrar 通过编程方式动态注册和取消任务。 使用 Quartz 调度框架 Quartz 支持动态修改任务执行时间 Scheduled 注解的任务异常处理机制是什么 如果 Scheduled 注解的任务抛出异常默认情况下异常会被捕获并记录到日志中但不会影响其他任务的执行。 自定义异常处理 可以在任务方法内部使用 try-catch 捕获异常。 或者使用 Spring 的 ExceptionHandler 注解统一处理异常 如何避免 Scheduled 任务的重复执行 在分布式环境中多个实例可能会同时执行同一个定时任务。为了避免重复执行可以使用以下方法 分布式锁 使用 Redis 或 Zookeeper 实现分布式锁 数据库唯一约束 在任务执行前插入一条记录利用数据库的唯一约束避免重复执行 Scheduled注解的任务执行时间受系统时间影响吗 是的Scheduled 注解的任务执行时间依赖于系统时间。如果系统时间被修改可能会影响任务的执行 解决方案 使用 NTP 服务同步系统时间。 在任务逻辑中增加时间校验 同一个任务即使上一次执行还未完成只要时间到就会再次执行该任务 由于使用了异步执行当调用被 Async 注解标注的方法时该方法会在新的线程中执行调用线程不会等待其执行完成。 因此如果在方法还未执行完时再次调用该方法Spring 会再次将该任务提交到线程池中开启一个新的线程来执行该方法而不会等待上一次执行结束 Async 异步方法默认使用 Spring 创建 ThreadPoolTaskExecutor Spring 在开启异步支持后默认会使用 ThreadPoolTaskExecutor 作为线程池来执行异步任务 这个线程池的配置信息可以在 TaskExecutionAutoConfiguration 类中找到 ThreadPoolTaskExecutor的默认核心线程数为 8 默认最大队列和默认最大线程数都是 Integer.MAX_VALUE 核心线程数核心线程数是线程池始终保持的线程数量。当有新的任务提交时线程池会优先使用核心线程来执行任务。在默认配置下ThreadPoolTaskExecutor 的核心线程数为 8。最大队列当核心线程都在执行任务时新提交的任务会被放入队列中等待执行。默认情况下队列的最大容量为 Integer.MAX_VALUE这意味着队列几乎可以无限容纳任务。最大线程数当队列已满且核心线程都在执行任务时线程池会创建新的线程来执行任务但线程数不会超过最大线程数。默认情况下最大线程数为 Integer.MAX_VALUE ThreadPoolTaskExecutor创建新线程的条件是队列填满时而这样的配置队列永远不会填满 由于默认队列的最大容量为 Integer.MAX_VALUE在实际应用中队列几乎不可能被填满。因此线程池在核心线程都在执行任务时不会创建新的线程新的任务会一直被放入队列中等待执行 如果有 Async 注解标注的方法长期占用线程在核心 8 个线程数占用满了之后新的调用就会进入队列外部表现为没有执行 当被 Async 注解标注的方法执行时间很长比如进行 HTTP 长连接等待获取结果会导致核心线程一直被占用 当 8 个核心线程都被占用后新的任务会被放入队列中等待 由于队列几乎不会满线程池不会创建新的线程来执行这些任务因此从外部看起来这些新的调用就像没有执行一样 所以我们最好不要用Aync默认的ThreaPoolTaskExecutor 因为它核心线程数为8默认线程数为Integer.MAX_VALUE说明我们有了8个线程执行后我们就不会再创建线程执行了因为我们的队列是无界队列这样子明显不好
http://www.w-s-a.com/news/313360/

相关文章:

  • 简历网站免费怎么查在哪个网站做的备案
  • 响应式网站 价格网站用哪些系统做的比较好用
  • 高端网站案例360做的网站
  • 瑞安地区建设网站公众号开发者工具是干嘛的
  • 请解释网站开发的主要流程.wordpress主体上传
  • 网站方案组成要素饰品公司网站建设方案
  • 网站改版被降权赣州景文网络科技有限公司
  • 吉林省网站建设推广图片模版
  • 如何做网站热力图佛山 网站关键词优化
  • 个人网站建设论文中期报告申报网站建设理由 模板
  • 岫岩做网站软件开发和app开发的区别
  • 邯郸质量一站式服务平台上线如何做国外销售网站
  • 内蒙古工程建设协会网站sem优化策略
  • Linux网站建设总结建设电子商务平台
  • 公司网站背景图片课程网站如何建设
  • 用js做简单的网站页面互联网技术对人力资源管理的影响有哪些
  • 银川做网站贵德县wap网站建设公司
  • 深圳网站建设zvge山西省煤炭基本建设局网站
  • 佛山网页网站设计线上怎么做推广和宣传
  • 多个域名绑定同一个网站案例
  • 建设网站都需要准备什么代理加盟微信网站建设
  • 网站备案没有了wordpress 添加按钮
  • 湖南建设银行宣传部网站福田蒙派克空调滤芯安装位置图
  • wap网站搜索wordpress工作室模板
  • 青岛金融网站建设如何提交网站地图
  • 制作简单门户网站步骤网站建设论文的摘要
  • 可以直接进入网站的正能量照片学做静态网站
  • 织梦做社交网站合适吗网站的市场如何制作
  • 阳曲网站建设价格多少四川佳和建设工程网站
  • 免费注册店铺位置sem seo什么意思