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

怎么做网站推广方案/百度一下你就知道啦

怎么做网站推广方案,百度一下你就知道啦,单位网站建设的必要性,网站备案入口文章目录场景需求同步方式代码结果输出异步方式代码结果输出延伸转载请标明出处: https://bigmaning.blog.csdn.net/article/details/125455916 本文出自:【BigManing的博客】 场景需求 一共有20条数据,每条数据处理需要2秒,分别使用同步、异…

文章目录

    • 场景需求
    • 同步方式
      • 代码
      • 结果输出
    • 异步方式
      • 代码
      • 结果输出
      • 延伸

转载请标明出处:
https://bigmaning.blog.csdn.net/article/details/125455916
本文出自:【BigManing的博客】

场景需求

一共有20条数据,每条数据处理需要2秒,分别使用同步、异步方式处理,一共需要多久才能处理完呢?

接下来进行简单的验证,如有疑惑,欢迎指正。

同步方式

使用map算子模拟同步

代码

	/*** 同步方式  */private static void syncHandleData() throws Exception {StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();env.setParallelism(1);env.generateSequence(1, 20).map(aLong -> {return handleData(aLong);});env.execute("test");}/*** 模拟业务 耗时2s操作**/private static Long handleData(Long aLong) throws InterruptedException {String dateTime = DateFormatUtils.ISO_DATETIME_FORMAT.format(new Date());System.out.println(dateTime + "====> 处理第" + aLong + "个任务... 开始 " + Thread.currentThread().getName());// 模拟 耗时2s处理Thread.sleep(2000);dateTime = DateFormatUtils.ISO_DATETIME_FORMAT.format(new Date());System.out.println(dateTime + "====> 处理第" + aLong + "个任务... 结束");return aLong;}

结果输出

从以下结果可以得出结论:

  1. 每个任务都是按照顺序执行的
  2. 每个任务都是耗时2s()
  3. 总耗时为 20*2 = 40s
2022-06-25T09:53:39====> 处理第1个任务... 开始 Thread-7
2022-06-25T09:53:41====> 处理第1个任务... 结束
2022-06-25T09:53:41====> 处理第2个任务... 开始 Thread-7
2022-06-25T09:53:43====> 处理第2个任务... 结束
2022-06-25T09:53:43====> 处理第3个任务... 开始 Thread-7
2022-06-25T09:53:45====> 处理第3个任务... 结束
2022-06-25T09:53:45====> 处理第4个任务... 开始 Thread-7
2022-06-25T09:53:47====> 处理第4个任务... 结束
2022-06-25T09:53:47====> 处理第5个任务... 开始 Thread-7
2022-06-25T09:53:49====> 处理第5个任务... 结束
2022-06-25T09:53:49====> 处理第6个任务... 开始 Thread-7
2022-06-25T09:53:51====> 处理第6个任务... 结束
2022-06-25T09:53:51====> 处理第7个任务... 开始 Thread-7
2022-06-25T09:53:53====> 处理第7个任务... 结束
2022-06-25T09:53:53====> 处理第8个任务... 开始 Thread-7
2022-06-25T09:53:55====> 处理第8个任务... 结束
2022-06-25T09:53:55====> 处理第9个任务... 开始 Thread-7
2022-06-25T09:53:57====> 处理第9个任务... 结束
2022-06-25T09:53:57====> 处理第10个任务... 开始 Thread-7
2022-06-25T09:53:59====> 处理第10个任务... 结束
2022-06-25T09:53:59====> 处理第11个任务... 开始 Thread-7
2022-06-25T09:54:01====> 处理第11个任务... 结束
2022-06-25T09:54:01====> 处理第12个任务... 开始 Thread-7
2022-06-25T09:54:03====> 处理第12个任务... 结束
2022-06-25T09:54:03====> 处理第13个任务... 开始 Thread-7
2022-06-25T09:54:05====> 处理第13个任务... 结束
2022-06-25T09:54:05====> 处理第14个任务... 开始 Thread-7
2022-06-25T09:54:07====> 处理第14个任务... 结束
2022-06-25T09:54:07====> 处理第15个任务... 开始 Thread-7
2022-06-25T09:54:09====> 处理第15个任务... 结束
2022-06-25T09:54:09====> 处理第16个任务... 开始 Thread-7
2022-06-25T09:54:11====> 处理第16个任务... 结束
2022-06-25T09:54:11====> 处理第17个任务... 开始 Thread-7
2022-06-25T09:54:13====> 处理第17个任务... 结束
2022-06-25T09:54:13====> 处理第18个任务... 开始 Thread-7
2022-06-25T09:54:15====> 处理第18个任务... 结束
2022-06-25T09:54:15====> 处理第19个任务... 开始 Thread-7
2022-06-25T09:54:17====> 处理第19个任务... 结束
2022-06-25T09:54:17====> 处理第20个任务... 开始 Thread-7
2022-06-25T09:54:19====> 处理第20个任务... 结束

异步方式

使用AsyncDataStream数据流,因为我们不需要关注顺序,所以使用unorderedWait方法。如果你需要关注顺序,可以使用orderedWait方法。

代码

/*** 异步方式*/private static void asyncHandleData() throws Exception {StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();env.setParallelism(1);DataStreamSource<Long> longDataStreamSource = env.generateSequence(1, 20);// 不用关心顺序,异步处理完直接发送到下游AsyncDataStream.unorderedWait(longDataStreamSource, new MyRichAsyncFunction(), 1, TimeUnit.MINUTES, 5);env.execute("test");}/*** RichAsyncFunction 异步处理Function 实现类*/static class MyRichAsyncFunction extends RichAsyncFunction<Long, Long> {private ThreadPoolExecutor threadPoolExecutor;@Overridepublic void open(Configuration parameters) throws Exception {super.open(parameters);// 初始化操作threadPoolExecutor = new ThreadPoolExecutor(5, 10, 1, TimeUnit.MINUTES, new LinkedBlockingQueue<>());}@Overridepublic void close() throws Exception {super.close();// 善后操作threadPoolExecutor.shutdown();}@Overridepublic void timeout(Long input, ResultFuture<Long> resultFuture) throws Exception {// 超时操作resultFuture.completeExceptionally(new TimeoutException());}@Overridepublic void asyncInvoke(Long aLong, ResultFuture<Long> resultFuture) throws Exception {// 异步客户端处理CompletableFuture.runAsync(() -> {try {handleData(aLong);} catch (InterruptedException e) {resultFuture.completeExceptionally(e);return;}resultFuture.complete(Collections.singleton(aLong));}, threadPoolExecutor);}}/*** 模拟 耗时2s操作*/private static Long handleData(Long aLong) throws InterruptedException {String dateTime = DateFormatUtils.ISO_DATETIME_FORMAT.format(new Date());System.out.println(dateTime + "====> 处理第" + aLong + "个任务... 开始 " + Thread.currentThread().getName());// 模拟 耗时2s处理Thread.sleep(2000);dateTime = DateFormatUtils.ISO_DATETIME_FORMAT.format(new Date());System.out.println(dateTime + "====> 处理第" + aLong + "个任务... 结束");return aLong;}

结果输出

从以下结果可以得出结论:

  1. 任务是异步并发处理的
  2. 由于是AsyncDataStream.unorderedWait,所以顺序是无序的
  3. 总耗时为 8s (2022-06-25T10:23:09 - 2022-06-25T10:23:01)
2022-06-25T10:23:01====> 处理第4个任务... 开始 pool-3-thread-4
2022-06-25T10:23:01====> 处理第2个任务... 开始 pool-3-thread-2
2022-06-25T10:23:01====> 处理第5个任务... 开始 pool-3-thread-5
2022-06-25T10:23:01====> 处理第3个任务... 开始 pool-3-thread-3
2022-06-25T10:23:01====> 处理第1个任务... 开始 pool-3-thread-1
2022-06-25T10:23:03====> 处理第4个任务... 结束
2022-06-25T10:23:03====> 处理第2个任务... 结束
2022-06-25T10:23:03====> 处理第1个任务... 结束
2022-06-25T10:23:03====> 处理第3个任务... 结束
2022-06-25T10:23:03====> 处理第5个任务... 结束
2022-06-25T10:23:03====> 处理第6个任务... 开始 pool-3-thread-4
2022-06-25T10:23:03====> 处理第7个任务... 开始 pool-3-thread-2
2022-06-25T10:23:03====> 处理第8个任务... 开始 pool-3-thread-1
2022-06-25T10:23:03====> 处理第9个任务... 开始 pool-3-thread-3
2022-06-25T10:23:03====> 处理第10个任务... 开始 pool-3-thread-5
2022-06-25T10:23:05====> 处理第6个任务... 结束
2022-06-25T10:23:05====> 处理第7个任务... 结束
2022-06-25T10:23:05====> 处理第8个任务... 结束
2022-06-25T10:23:05====> 处理第9个任务... 结束
2022-06-25T10:23:05====> 处理第11个任务... 开始 pool-3-thread-4
2022-06-25T10:23:05====> 处理第10个任务... 结束
2022-06-25T10:23:05====> 处理第12个任务... 开始 pool-3-thread-1
2022-06-25T10:23:05====> 处理第13个任务... 开始 pool-3-thread-2
2022-06-25T10:23:05====> 处理第14个任务... 开始 pool-3-thread-3
2022-06-25T10:23:05====> 处理第15个任务... 开始 pool-3-thread-5
2022-06-25T10:23:07====> 处理第13个任务... 结束
2022-06-25T10:23:07====> 处理第15个任务... 结束
2022-06-25T10:23:07====> 处理第11个任务... 结束
2022-06-25T10:23:07====> 处理第12个任务... 结束
2022-06-25T10:23:07====> 处理第14个任务... 结束
2022-06-25T10:23:07====> 处理第16个任务... 开始 pool-3-thread-3
2022-06-25T10:23:07====> 处理第17个任务... 开始 pool-3-thread-5
2022-06-25T10:23:07====> 处理第18个任务... 开始 pool-3-thread-4
2022-06-25T10:23:07====> 处理第19个任务... 开始 pool-3-thread-1
2022-06-25T10:23:07====> 处理第20个任务... 开始 pool-3-thread-2
2022-06-25T10:23:09====> 处理第18个任务... 结束
2022-06-25T10:23:09====> 处理第17个任务... 结束
2022-06-25T10:23:09====> 处理第16个任务... 结束
2022-06-25T10:23:09====> 处理第19个任务... 结束
2022-06-25T10:23:09====> 处理第20个任务... 结束

延伸

使用orderedWait会有什么样的表现呢?

代码修改如下:

/*** 异步方式*/private static void asyncHandleData() throws Exception {StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();env.setParallelism(1);DataStreamSource<Long> longDataStreamSource = env.generateSequence(1, 20);// 关心顺序,使用orderedWait, 异步处理完 并且是位于队列第一个 才发送到下游AsyncDataStream.orderedWait(longDataStreamSource, new MyRichAsyncFunction(), 1, TimeUnit.MINUTES, 5)//     //  验证 orderedWait   .print("打印结果:");env.execute("test");}

运行结果:

2022-06-25T10:39:57====> 处理第2个任务... 开始 pool-3-thread-2
2022-06-25T10:39:57====> 处理第4个任务... 开始 pool-3-thread-4
2022-06-25T10:39:57====> 处理第5个任务... 开始 pool-3-thread-5
2022-06-25T10:39:57====> 处理第3个任务... 开始 pool-3-thread-3
2022-06-25T10:39:57====> 处理第1个任务... 开始 pool-3-thread-1
2022-06-25T10:39:59====> 处理第4个任务... 结束
2022-06-25T10:39:59====> 处理第1个任务... 结束
2022-06-25T10:39:59====> 处理第2个任务... 结束
2022-06-25T10:39:59====> 处理第3个任务... 结束
2022-06-25T10:39:59====> 处理第5个任务... 结束
打印结果:> 1
打印结果:> 2
打印结果:> 3
打印结果:> 4
打印结果:> 5
2022-06-25T10:39:59====> 处理第6个任务... 开始 pool-3-thread-1
2022-06-25T10:39:59====> 处理第7个任务... 开始 pool-3-thread-2
2022-06-25T10:39:59====> 处理第8个任务... 开始 pool-3-thread-4
2022-06-25T10:39:59====> 处理第9个任务... 开始 pool-3-thread-3
2022-06-25T10:39:59====> 处理第10个任务... 开始 pool-3-thread-5
2022-06-25T10:40:01====> 处理第9个任务... 结束
2022-06-25T10:40:01====> 处理第6个任务... 结束
2022-06-25T10:40:01====> 处理第8个任务... 结束
2022-06-25T10:40:01====> 处理第7个任务... 结束
2022-06-25T10:40:01====> 处理第10个任务... 结束
打印结果:> 6
打印结果:> 7
打印结果:> 8
打印结果:> 9
打印结果:> 10
2022-06-25T10:40:01====> 处理第11个任务... 开始 pool-3-thread-3
2022-06-25T10:40:01====> 处理第12个任务... 开始 pool-3-thread-1
2022-06-25T10:40:01====> 处理第13个任务... 开始 pool-3-thread-4
2022-06-25T10:40:01====> 处理第14个任务... 开始 pool-3-thread-2
2022-06-25T10:40:01====> 处理第15个任务... 开始 pool-3-thread-5
2022-06-25T10:40:03====> 处理第11个任务... 结束
2022-06-25T10:40:03====> 处理第12个任务... 结束
2022-06-25T10:40:03====> 处理第13个任务... 结束
打印结果:> 11
打印结果:> 12
打印结果:> 13
2022-06-25T10:40:03====> 处理第14个任务... 结束
2022-06-25T10:40:03====> 处理第15个任务... 结束
2022-06-25T10:40:03====> 处理第16个任务... 开始 pool-3-thread-2
打印结果:> 14
2022-06-25T10:40:03====> 处理第17个任务... 开始 pool-3-thread-1
打印结果:> 15
2022-06-25T10:40:03====> 处理第18个任务... 开始 pool-3-thread-4
2022-06-25T10:40:03====> 处理第19个任务... 开始 pool-3-thread-3
2022-06-25T10:40:03====> 处理第20个任务... 开始 pool-3-thread-5
2022-06-25T10:40:05====> 处理第16个任务... 结束
打印结果:> 16
2022-06-25T10:40:05====> 处理第17个任务... 结束
2022-06-25T10:40:05====> 处理第19个任务... 结束
2022-06-25T10:40:05====> 处理第18个任务... 结束
打印结果:> 17
2022-06-25T10:40:05====> 处理第20个任务... 结束
打印结果:> 18
打印结果:> 19
打印结果:> 20
http://www.lbrq.cn/news/1311931.html

相关文章:

  • 电子招标投标平台网站建设/网络营销与策划实践报告
  • 好的响应式网站/廊坊seo外包
  • 组工网站建设方案/优化快速排序
  • 专业的上海网站建设公司/网络培训机构排名前十
  • 小清新个人网站/爱链接购买链接
  • 怎么做网站的seo优化/站长统计app网站
  • 怎么做简单地网站/网站收录网
  • 杭州网站建设案例/关键词优化公司哪家效果好
  • 企业网站建设服务/兰州网站优化
  • 个人网站模板html免费/微商如何引流与推广
  • 洛阳网站建设/比较有名的个人网站
  • 网站建设的一般流程是/seo网站推广简历
  • 制作app需要先做网站/广告联盟怎么做
  • 10个零网站建设/百度怎么进入官方网站
  • 建设银行网站总是崩溃/电商运营工作内容
  • 赤峰做网站开发/百度网首页
  • 装饰公司师大排名/电池优化大师下载
  • 网站上的图片一般多大合适/百度电脑版网页
  • 青岛建手机网站公司/优化疫情防控
  • wordpress 最快的版本/网站优化包括哪些内容
  • 长沙网站优化外包/实时热榜
  • 昔阳做网站公司/seo怎么做推广
  • 梅州免费建站/网络营销外包收费
  • 网站产品页排名怎么做/seo入门教程视频
  • 做服装外单的网站/seo顾问多少钱
  • 前海网站建设/互联网营销案例
  • 沈阳微信网站制作价格/shodan搜索引擎
  • 沧州有做网站的吗/友情链接交换要注意哪些问题
  • seo网站建设是什么意思/百度引流推广怎么做
  • 政府网站都是谁做的/关键词代发排名首页
  • Electron实现“仅首次运行时创建SQLite数据库”
  • Node.js Process Events 深入全面讲解
  • 如何在硬件中进行有效地调试
  • 测试tcpdump,分析tcp协议
  • 邮件伪造漏洞
  • 深度解读virtio:Linux IO虚拟化核心机制