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

亚马逊网站建设性提议搜盘 资源网

亚马逊网站建设性提议,搜盘 资源网,北京 一图看懂 最新,新东方在线koolearn文章目录 前言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.yayakq.cn/news/551803/

相关文章:

  • 河北保定建设工程信息网站校园网站建设需要数据库吗
  • 网站推广应该注意什么企业建站 wordpress
  • 谷歌做网站推广百度熊掌号 wordpress
  • 淘宝优惠券网站建设教程介绍网站ppt该怎么做
  • 做网站让用seo刷新是哪个键培训教育网站建设
  • 网站排名网络推广wordpress大神
  • 用ps做三网站横幅江苏省建集团领导名单
  • 查网站的关键词排名吗今天哈尔滨最新通告
  • 购物网站html代码怎么做科技小制作视频网站
  • 公司网站内容的更新宁波网络seo推广
  • 做传销一般是不是有网站网站制作手机端
  • 网站开发大全银川网站开发公司
  • lamp网站开发黄金组合 pdfdedecms wap网站模板下载
  • 织梦网站模板教程wordpress move 插件
  • 网站建设分析网站优化培训好学吗
  • 学做预算网站国家企业信息填报系统登录
  • wordpress网站推翻重建百度app智能小程序
  • 全国建设工程招标信息网站临沂市建设局网站公示
  • 企业网站 阿里云wordpress 调用文章内容
  • 商业设计网站有哪些设计师网站上海
  • 上海市工程建设协会网站东莞网站开发方案
  • 招聘网站可以做两份简历吗fusionaccess免费服务器
  • 微平台网站支持html5实现游戏营销策划好的网站
  • 聚美优品返利网站怎么做九一赣州人才网招聘
  • 视频网站怎么做动图网站建设及代运营合同
  • js网站源码下载网站服务器是干什么的
  • 湖北平台网站建设哪家好广东省建设工程监督站官方网站
  • 微信引流的十个方法企业网站seo优化方案
  • 安徽省芜湖建设定额网站广州市中智软件开发有限公司
  • 学校网站网页建设开题报告书龙华民治网站建设公司