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

中国室内装修设计网株洲企业seo优化

中国室内装修设计网,株洲企业seo优化,辽宁沈阳网站建设,wordpress 文字大小文章目录 前言EventListener 监听事件 ,在同一个虚拟机中如何保证顺序执行1. 设计原理2. 具体编码2.1. 编码事件监听器2.2. 制作一个生成序号方法2.3. 制作测试代码2.4. 测试结果 前言 如果您觉得有用的话,记得给博主点个赞,评论,…

文章目录

  • 前言
    • @EventListener 监听事件 ,在同一个虚拟机中如何保证顺序执行
      • 1. 设计原理
      • 2. 具体编码
        • 2.1. 编码事件监听器
        • 2.2. 制作一个生成序号方法
        • 2.3. 制作测试代码
        • 2.4. 测试结果

前言

  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
  而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


@EventListener 监听事件 ,在同一个虚拟机中如何保证顺序执行

1. 设计原理

使用有序事件监听器:@EventListener注解可以接受一个org.springframework.core.Ordered接口来指示监听器的执行顺序。通过设置相应的顺序值,来控制事件监听器的执行顺序。

2. 具体编码

2.1. 编码事件监听器

编码事件监听器:

    @Async@EventListener(classes = ThreeEvent.class)public void threeEventEventHandler(ThreeEvent event) {log.info("=====================ThreeEvent===================:name:{},order:{}",event.getName(),event.getOrder());}

编码监听事件VO并继承Ordered:

@Getter
@Setter
@ToString
public class ThreeEvent extends ApplicationEvent implements Ordered {private int order;private String  name;public ThreeEvent(int order) {super("ThreeEvent async message");this.order = order;}//======================================================public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic int getOrder() {return order;}
}

2.2. 制作一个生成序号方法

此方法当天调用获得的值为9999999 至 0:

public class NumUtil {public static Integer getNum(String type){StringRedisTemplate template = (StringRedisTemplate) SpringContextUtil.getApplicationContext().getBean("stringRedisStdTemplate");String today = DateUtils.format(new Date(), "yyyyMMdd");String key = StringUtils.join(type,"_", today);String numMax = "9999999";if (template.hasKey(key)) {Long decrement = template.opsForValue().decrement(key, 1L);return decrement.intValue();}template.opsForValue().set(key,numMax);template.expire(key, 24 * 60 * 60, TimeUnit.SECONDS);return Integer.valueOf(numMax);}
}

2.3. 制作测试代码

首先定义一个线程池:

@Configuration
@EnableAsync
public class ThreadPoolTaskExecutorConfig {@Bean("yzyThreadPoolExecutor")public ThreadPoolExecutor taskExecutor() {int threads = Math.min(Runtime.getRuntime().availableProcessors() * 2, 20);return new ThreadPoolExecutor(threads, threads,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>(100),new NamedThreadFactory("jobThreadPoolExecutor-", false));}
}

编写要用线程池执行的方法:

    @Async("yzyThreadPoolExecutor")public void test(){ThreeEvent event1 = new ThreeEvent(NumUtil.getNum(EVENT_NUM));event1.setName("eiuyriuw");SpringContextUtil.getApplicationContext().publishEvent(event1);}

制作执行逻辑:

    @ApiOperation(value = "测试", notes = "测试")@CommonLog(methodName = "测试",className = "TestController#event1")@RequestMapping(value = "/v1/event1", method = RequestMethod.POST)public void event1(){for (int i = 0 ;i<100;i++) {test();i++;}}

2.4. 测试结果

在这里插入图片描述
可以看到在并发环境下,事件监听的执行顺序也可以得到保证。

http://www.yidumall.com/news/6387.html

相关文章:

  • 网站建设进度规划电销外包团队在哪找
  • 建设一个官方网站的费用站长工具seo综合查询下载
  • 我请网络公司做的网站上的图片被当广告拦截了_怎么回事现在做网络推广好做吗
  • 常州网站建设企业网站香港域名注册网站
  • wordpress 附件路径福州seo视频
  • 杭州蚂蚁 做网站的公司网站开发制作培训学校
  • 网站会员充值接口怎么做的网站关键词排名优化
  • 做网站为什么需要营业执照网络软文营销案例
  • 创新模式_提高质量_建设一流的数学人才培养基地 教学成果奖申报网站网络营销项目策划书
  • 网络运营商包括哪些东莞快速优化排名
  • 网站设计联盟好用的seo软件
  • 珠海网站建设王道下拉惠网站优化推广
  • 改网站标题快照倒退怎么解决今日疫情最新情况
  • 旅游电子商务网站建设中最重要的环节和内容是什么北京网站优化服务
  • 移动端社区 wordpressseo快速排名站外流量推广
  • 新网$网站优化shopify seo
  • 西安做网站xamokj新闻实时报道
  • 中文html5网站欣赏浙江seo公司
  • 寻花问柳专注做男人喜爱的网站搜索广告和信息流广告区别
  • 做美食网站视频小红书推广方式有哪些
  • ai怎么做网站用海报北京搜索关键词优化
  • 外网怎样访问自己做的网站刷seo关键词排名软件
  • wordpress搭建公司网站seo1新地址在哪里
  • 小程序ui设计seo怎么刷排名
  • 找一家秦皇岛市做网站的公司产品营销策划
  • 番禺网站 优化百度学术论文官网入口
  • 比较好的做网站公司长春关键词优化平台
  • 网页设计图片轮播效果seo岗位工资
  • 怎样做商城手机网站营销网站建设多少钱
  • 手工制作灯笼的步骤网站页面的优化