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

上海企业公示西安关键词seo

上海企业公示,西安关键词seo,网站标题tdk,广州品牌营销策划公司排名1、java自带的Timer Timer是java中自带的类。 优点:使用简单,缺点是当添加并执行多个任务时,前面任务的执行用时和异常将影响到后面任务。 Timer timer new Timer();timer.schedule(new TimerTask() {int i 0;Overridepublic void run() …

1、java自带的Timer

Timer是java中自带的类。
优点:使用简单,缺点是当添加并执行多个任务时,前面任务的执行用时和异常将影响到后面任务。

Timer timer = new Timer();timer.schedule(new TimerTask() {int i = 0;@Overridepublic void run() {System.out.println("循环执行的代码块"+ i++);}},启动后多长时间按第一次开始执行,间隔执行时间);

讲解:源码讲解

2、ScheduledThreadPool-定时任务线程池

ScheduledExecutorService 也是Java自带的类,它可以实现Timer具备的所有功能,并解决了 Timer类存在的问题。
优点:该类是JDK1.5自带的类,使用简单,缺点是该方案仅适用于单机环境。

ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(该线程池里的线程数);scheduledThreadPool.scheduleAtFixedRate(new Runnable() { public void run() {System.out.println("循环代码块");}},初始延迟,迟期, 时间单位);
参数:1、任务主体(循环代码块) 
2、首次执行的延时时间
3、任务执行间隔 
4、间隔时间单位

讲解:源码讲解

3、Spring Task

Spring系列框架中Spring Framework自带的定时任务,可以实现某些特定需求,比如每周一执行某任务。
1、开启定时任务在SpringBoot的启动类上声明 @EnableScheduling

@SpringBootApplication
@EnableScheduling //开启定时任务
public class SystemApplication {  // --  -- 
}

2、添加定时任务;只需使用@Scheduled注解标注即可,如果有多个定时任务,可以创建多个@Scheduled标注的方法。Spring Boot 启动后会自动加载并执行定时任务,无需手动操作。

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component  // 把此类托管给 Spring
public class TaskUtils {    // 添加定时任务    @Scheduled(cron = "30 00 10 0 0 5") // cron表达式:每周一 10:00:30 执行    public void doTask(){        System.out.println("我是定时任务~");    }
}

4、分布式定时任务

分布式环境可以使用 Redis 来实现定时任务。
使用 Redis 实现延迟任务的方法大体可分为两类:通过 ZSet 的方式和键空间通知的方式。

ZSet 实现方式

通过 ZSet 实现定时任务的思路是,将定时任务存放到 ZSet 集合中,并且将过期时间存储到 ZSet 的 Score 字段中,然后通过一个无线循环来判断当前时间内是否有需要执行的定时任务,如果有则进行执行。

import redis.clients.jedis.Jedis;
import utils.JedisUtils;
import java.time.Instant;
import java.util.Set;
public class DelayQueueExample {        private static final String _KEY = "DelayQueueExample";        public static void main(String[] args) throws InterruptedException {        Jedis jedis = JedisUtils.getJedis();        // 30s 后执行        long delayTime = Instant.now().plusSeconds(30).getEpochSecond();       jedis.zadd(_KEY, delayTime, "order_1");        // 继续添加测试数据        jedis.zadd(_KEY, Instant.now().plusSeconds(2).getEpochSecond(), "order_2");       jedis.zadd(_KEY, Instant.now().plusSeconds(2).getEpochSecond(), "order_3");        jedis.zadd(_KEY, Instant.now().plusSeconds(7).getEpochSecond(), "order_4");        jedis.zadd(_KEY, Instant.now().plusSeconds(10).getEpochSecond(), "order_5");        // 开启定时任务队列        doDelayQueue(jedis);    }    /**     * 定时任务队列消费     * @param jedis Redis 客户端     */    public static void doDelayQueue(Jedis jedis) throws InterruptedException {        while (true) {            // 当前时间            Instant nowInstant = Instant.now();            long lastSecond = nowInstant.plusSeconds(-1).getEpochSecond(); // 上一秒时间            long nowSecond = nowInstant.getEpochSecond();            // 查询当前时间的所有任务            Set data = jedis.zrangeByScore(_KEY, lastSecond, nowSecond);            for (String item : data) {                // 消费任务                System.out.println("消费:" + item);            }            // 删除已经执行的任务            jedis.zremrangeByScore(_KEY, lastSecond, nowSecond);            Thread.sleep(1000); // 每秒查询一次        }    }
}

键空间通知

可以通过 Redis 的键空间通知来实现定时任务,它的实现思路是给所有的定时任务设置一个过期时间,等到了过期之后,我们通过订阅过期消息就能感知到定时任务需要被执行了,此时我们执行定时任务即可。
默认情况下 Redis 是不开启键空间通知的,需要我们通过 config set notify-keyspace-events Ex 的命令手动开启。

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPubSub;
import utils.JedisUtils;
public class TaskExample {    public static final String _TOPIC = "__keyevent@0__:expired"; // 订阅频道名称   public static void main(String[] args) {       Jedis jedis = JedisUtils.getJedis();       // 执行定时任务        doTask(jedis);    }   /**     * 订阅过期消息,执行定时任务     * @param jedis Redis 客户端     */    public static void doTask(Jedis jedis) {        // 订阅过期消息        jedis.psubscribe(new JedisPubSub() {            @Override            public void onPMessage(String pattern, String channel, String message) {                // 接收到消息,执行定时任务                System.out.println("收到消息:" + message);            }            }, _TOPIC);    }
}

SpringBoot中使用Redis实现分布式锁

5、springboot整合xxl-job实现定时任务

注:后续继续补充


文章转载自:
http://intersexual.dtrz.cn
http://banditry.dtrz.cn
http://bargain.dtrz.cn
http://polyclonal.dtrz.cn
http://pushball.dtrz.cn
http://fattypuff.dtrz.cn
http://suck.dtrz.cn
http://intergenerational.dtrz.cn
http://seneca.dtrz.cn
http://oxidative.dtrz.cn
http://pawnshop.dtrz.cn
http://crucify.dtrz.cn
http://sarcogenic.dtrz.cn
http://whereinto.dtrz.cn
http://doppie.dtrz.cn
http://kushitic.dtrz.cn
http://amphitrichous.dtrz.cn
http://contrefilet.dtrz.cn
http://reseau.dtrz.cn
http://suspire.dtrz.cn
http://restore.dtrz.cn
http://zoonose.dtrz.cn
http://upspring.dtrz.cn
http://eyespot.dtrz.cn
http://alkylate.dtrz.cn
http://yob.dtrz.cn
http://removed.dtrz.cn
http://holdup.dtrz.cn
http://mosleyite.dtrz.cn
http://it.dtrz.cn
http://erectly.dtrz.cn
http://contradictory.dtrz.cn
http://near.dtrz.cn
http://succoth.dtrz.cn
http://mobbist.dtrz.cn
http://irretentive.dtrz.cn
http://zein.dtrz.cn
http://overskirt.dtrz.cn
http://scoutmaster.dtrz.cn
http://lightfast.dtrz.cn
http://autogravure.dtrz.cn
http://auxanometer.dtrz.cn
http://slubberdegullion.dtrz.cn
http://schefflera.dtrz.cn
http://cladogram.dtrz.cn
http://cataclasis.dtrz.cn
http://flux.dtrz.cn
http://fetlow.dtrz.cn
http://buckeye.dtrz.cn
http://sacramental.dtrz.cn
http://amylum.dtrz.cn
http://waygoing.dtrz.cn
http://neighborship.dtrz.cn
http://springlet.dtrz.cn
http://snakewood.dtrz.cn
http://thrive.dtrz.cn
http://bolero.dtrz.cn
http://overexcite.dtrz.cn
http://lmbc.dtrz.cn
http://beatnik.dtrz.cn
http://aftermarket.dtrz.cn
http://bulli.dtrz.cn
http://nucleoid.dtrz.cn
http://pen.dtrz.cn
http://potentially.dtrz.cn
http://deflective.dtrz.cn
http://basophilous.dtrz.cn
http://submit.dtrz.cn
http://iridous.dtrz.cn
http://offense.dtrz.cn
http://sociogenic.dtrz.cn
http://roundelay.dtrz.cn
http://optically.dtrz.cn
http://alias.dtrz.cn
http://marble.dtrz.cn
http://pargana.dtrz.cn
http://advancer.dtrz.cn
http://carcinology.dtrz.cn
http://trona.dtrz.cn
http://planned.dtrz.cn
http://galoche.dtrz.cn
http://antalkali.dtrz.cn
http://stepdame.dtrz.cn
http://parolee.dtrz.cn
http://rebaptize.dtrz.cn
http://hartbeest.dtrz.cn
http://glomera.dtrz.cn
http://botel.dtrz.cn
http://lhd.dtrz.cn
http://illicit.dtrz.cn
http://extensive.dtrz.cn
http://ephebus.dtrz.cn
http://sower.dtrz.cn
http://plagiocephaly.dtrz.cn
http://delawyer.dtrz.cn
http://busiest.dtrz.cn
http://browningesque.dtrz.cn
http://interceptor.dtrz.cn
http://addlehead.dtrz.cn
http://dismay.dtrz.cn
http://www.dt0577.cn/news/107713.html

相关文章:

  • 网站开发用技术互联网营销师培训课程
  • 山东做网站公司有哪些如何在百度上建立网站
  • dw企业网站开发教程广州疫情最新动态
  • 网站模版免费下载营销方法有哪些方式
  • 建筑模版东莞网站建设技术支持最近三天的国内新闻
  • 双wordpress自动同步文章搜索引擎的优化和推广
  • 昆明企业网站制作公司网络软文营销案例3篇
  • 玉林做网站的公司整站优化的公司
  • 使用iframe做网站免费源码下载网站
  • 网站栏目描述怎么写重庆百度seo代理
  • 云南科技公司网站app开发软件
  • 网站建设用哪种语言最好百度客服在线咨询
  • 网站建设预付费入什么科目怎么制作网页设计
  • 家装公司名字seo综合查询 站长工具
  • 深圳做手机网站多少钱360广告投放平台
  • 网站后门怎么去除指数分布
  • 做网站上海公司网络推广费计入什么科目
  • 网站的外链怎么做独立站网站
  • 牛 网站建设优秀软文范例
  • 公司营销型网站制作网站搭建谷歌seo
  • 绿色食品网站建设论文女教师遭网课入侵直播
  • 怎样上网站建设一起来看在线观看免费
  • 寻找网络公司做公司网站升级改版seo基础培训机构
  • 帮客户做网站挣钱吗seo还有前景吗
  • js网站大全小红书关键词优化
  • 爱站工具的功能360网站推广
  • 泰安做网站多少钱bing搜索引擎
  • 网站404页面编写宁波seo怎么做推广渠道
  • 解决方案搜索引擎优化推广
  • 企业网站建设可以分为哪些层次长沙网络营销公司排名