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

正在建设的网站最佳磁力引擎吧

正在建设的网站,最佳磁力引擎吧,网站运营公司,电子商务网站建设与维护的教学今天我们不用任何框架#xff0c;用最朴素的 Java API 来实现定时任务#xff0c;本文会介绍 3 种实现方案#xff0c;我们一起来看...1、 sleep 这也是我们最常用的 sleep 休眠大法#xff0c;不只是当作休眠用#xff0c;我们还可以利用它很轻松的能实现一个简单的定时任… 今天我们不用任何框架用最朴素的 Java API 来实现定时任务本文会介绍 3 种实现方案我们一起来看...1、 sleep 这也是我们最常用的 sleep 休眠大法不只是当作休眠用我们还可以利用它很轻松的能实现一个简单的定时任务。实现逻辑新开一个线程添加一个 for/ while 死循环然后在死循环里面添加一个 sleep 休眠逻辑让程序每隔 N 秒休眠再执行一次这样就达到了一个简单定时任务的效果。实现代码如下/*** 休眠实现定时任务*/ private static void sleepTask() {new Thread(() - {while (true) {System.out.println(hi, 欢迎关注Java技术栈);try {// 每隔3秒执行一次Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}}}).start(); } 这种方式比较傻瓜化了只能按固定频率运行不能指定具体运行的时间。另外上面的箭头语法使用了 JDK 8 中的 Lambda 表达式。2、Timer 来看下 JDK 自带的 java.util.Timer 类JDK 1.3 就内置了 java.util.Timer 类可以用来调度 java.util.TimerTask 任务。几个重要的方法schedule开始调度任务提供了几个包装方法cancle终止任务调度取消当前调度的所有任务正在运行的任务不受影响purge从任务队列中移除所有已取消的任务另外java.util.TimerTask 就是实现了 Runnable 接口具体任务逻辑则是在 run 方法里去实现。实现代码如下/*** timer定时任务*/ private static void timerTask() throws InterruptedException {Timer timer  new Timer();TimerTask timerTask  new TimerTask() {Overridepublic void run() {System.out.println(hi, 欢迎关注);}};// 第一次任务延迟时间long delay  2000;// 任务执行频率long period  3 * 1000;// 开始调度timer.schedule(timerTask, delay, period);// 指定首次运行时间 // timer.schedule(timerTask, DateUtils.addSeconds(new Date(), 5), period);Thread.sleep(20000);// 终止并移除任务timer.cancel();timer.purge(); } 这种实现方式比较简单可以指定首次执行的延迟时间、首次执行的具体日期时间以及执行频率能满足日常需要。另外需要注意的是Timer 是线程安全的因为背后是单线程在执行所有任务。Timer 也会有一些缺陷Timer 是单线程的假如有任务 A,B,C任务 A 如果执行时间比较长那么就会影响任务 B,C 的启动和执行时间如果 B,C 执行时间也比较长那就会相互影响Timer 不会捕获异常如果 A,B,C 任何一个任务在执行过程中发生异常就会导致 TImer 整个定时任务停止工作Timer 是基于绝对时间调度的而不是基于相对时间所以它对系统时间的改变非常敏感所以如果在使用 Timer 的过程中要注意这些缺陷虽然可以用但不推荐。3、ScheduledExecutorService 因 Timer 有一些缺陷所以不太建议使用 Timer推荐使用 ScheduledExecutorServiceScheduledExecutorService 即是 Timer 的替代者JDK 1.5 并发包引入是基于线程池设计的定时任务类java.util.concurrent.Executors.newScheduledThreadPool上了线程池每个调度任务都会分配到线程池中的某一个线程去执行任务就是并发调度执行的任务之间互不影响。几个重要的调度方法schedule只执行一次调度scheduleAtFixedRate按固定频率调度如果执行时间过长下一次调度会延迟不会同时执行scheduleWithFixedDelay延迟调度上一次执行完再加上延迟时间后执行另外可以看出任务是支持 Runnable 和 Callable 调度的。实现代码如下/*** 线程池定时任务*/ public static void poolTask(){ScheduledExecutorService pool  Executors.newScheduledThreadPool(10);pool.scheduleAtFixedRate(() - {System.out.println(hi, 欢迎关注);}, 2000, 3000, TimeUnit.MILLISECONDS); } 这是一个按固定频率调度的任务创建了 10 个核心线程数首次执行延迟 2 秒后续每 3 秒执行一次。这种方式简单、好用避免了使用 Timer 带来的各种问题推荐使用这种实现方式。总结 本文分享了 3 种  Java 实现定时任务的方式也相对简单但执行频率时间设置都太简单只适合简单的业务不适合实际复杂业务的需求实际业务要考虑分布式、故障转移恢复等远要复杂的多。本文仅给大家一个参考吧在不用框架的前提下也能实现定时任务在小而美的场景还是很香的。 往期推荐 定时任务的实现原理看完就能手撸一个一口气说出 6 种延时队列的实现方法面试官满意的笑了JDK 9 对字符串 String 的优化挺有意思
http://wiki.neutronadmin.com/news/339943/

相关文章:

  • 电子商务网站建设作业案例网络规划师多少分合格
  • 安徽省住房和城乡建设厅网站6镇江营销型建站公叿
  • 多城市网站开发哪些网站可以做设计软件
  • 鞍山工程建设信息网站软件定制开发服务收费多少
  • 营销网站建设专业团队在线服务wordpress怎么搜索别人的文章
  • 车票网站模板湛江做网站咨询电话
  • 常州城乡建设局网站首页制作作业平台网站的设计
  • 手机网站系统什么网站有高端定制案例
  • 建设银行租房平台网站6商品展示网站模板源码
  • 网站文章多久收录宝塔wordpress恢复出错
  • 做的王者荣耀钓鱼网站网站提交工具
  • 建设一个自己的网站网站做全局搜索
  • 不用代码的网站建设2021年uc秒懂网址
  • 傻瓜式php网站开发wordpress样式切换功能
  • 网站链接的常见形式刚刚北京发生大事了
  • 牛仔裤网站设计高端网站建设哪家好
  • 东莞物流网站设计公司网站中的自助报价系统
  • 手表网站推荐做网站怎么学
  • 重庆网站建设去迅法网新站整站排名优化火速公司
  • 制作网站的软件叫什么外贸模版网站
  • 网站开发平台开发公司企业官网网站
  • 全球50个大网站开发语言wordpress add page
  • 免费做名片儿的网站综合办公oa系统
  • 建设网站建设什么征琴wordpress高并发
  • 万网网站多少网站怎么显示百度名片
  • 面包店网站建设规划书宁波网站建设详细策划
  • 品牌网站建设价格天天快递wordpress悬浮按钮插件
  • 创建一个网站要多少钱实用的网站
  • 营销网站费用网站规划建设与管理维护的论文
  • 徐州 商城网站原神网页设计素材