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

上海建站shwzzz南昌网站设计特色

上海建站shwzzz,南昌网站设计特色,字体设计 创意在线,江苏网络科技有限公司文章目录 1、串行化执行2、并行化测试#xff08;多线程环境#xff09;3、任务的执行是异步的#xff0c;但主程序的继续执行是同步的 可以将多个任务编排为并行和串行化执行。 也可以处理编排的多个任务的异常#xff0c;也可以返回兜底数据。 1、串行化执行 顺序执行、… 文章目录 1、串行化执行2、并行化测试多线程环境3、任务的执行是异步的但主程序的继续执行是同步的 可以将多个任务编排为并行和串行化执行。 也可以处理编排的多个任务的异常也可以返回兜底数据。 1、串行化执行 顺序执行、同步执行 按顺序同步执行 导入 StopWatch 类这是 Spring 框架提供的一个工具类用于测量任务的执行时间。 package com.atguigu.structure;import org.springframework.util.StopWatch;public class Demo {public static void main(String[] args) throws InterruptedException {StopWatch stopWatch new StopWatch();// 为每个任务分别计时stopWatch.start(a任务);a();stopWatch.stop();stopWatch.start(b任务);b();stopWatch.stop();stopWatch.start(c任务);c();stopWatch.stop();// 此时StopWatch 已经自动停止了总任务的计时因为最后一个任务也已经停止// 但如果您想显式地停止总任务尽管在这个例子中它是多余的您需要确保没有正在运行的任务// 打印结果System.out.println(stopWatch.prettyPrint());}public static void a() throws InterruptedException {Thread.sleep(3000);System.out.println(Thread.currentThread().getName() a任务执行完毕- System.currentTimeMillis());}public static void b() throws InterruptedException {Thread.sleep(2000);System.out.println(Thread.currentThread().getName() b任务执行完毕- System.currentTimeMillis());}public static void c() throws InterruptedException {Thread.sleep(1000);System.out.println(Thread.currentThread().getName() c任务执行完毕- System.currentTimeMillis());} }由于 a 任务最先执行它的开始时间是 0 毫秒结束时间是 3000 毫秒。b 任务在 a 任务结束后立即开始因此它的开始时间是 3000 毫秒结束时间是 5000 毫秒。c 任务在 b 任务结束后立即开始因此它的开始时间是 5000 毫秒结束时间是 6000 毫秒。 main a任务执行完毕-1727613404687 main b任务执行完毕-1727613406705 main c任务执行完毕-1727613407711 StopWatch : 6.0325798 seconds ---------------------------------------- Seconds % Task name ---------------------------------------- 3.0193421 50% a任务 2.007708 33% b任务 1.0055297 17% c任务2、并行化测试多线程环境 多个并发任务 三个任务将并行执行 注意这里主线程不会等待任务线程完成因此程序可能会立即退出。 如果需要等待所有任务完成可以使用CountDownLatch或其他同步机制。 package com.atguigu.structure;import org.springframework.util.StopWatch;public class Demo {public static void main(String[] args) throws InterruptedException {StopWatch stopWatch new StopWatch();// 为每个任务分别计时stopWatch.start(a任务);new Thread(()-{a();}).start();stopWatch.stop();stopWatch.start(b任务);new Thread(()-{b();}).start();stopWatch.stop();stopWatch.start(c任务);new Thread(()-{c();}).start();stopWatch.stop();// 打印结果System.out.println(stopWatch.prettyPrint());}public static void a(){try {Thread.sleep(3000);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println(Thread.currentThread().getName() a任务执行完毕- System.currentTimeMillis());}public static void b(){try {Thread.sleep(2000);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println(Thread.currentThread().getName() b任务执行完毕- System.currentTimeMillis());}public static void c(){try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println(Thread.currentThread().getName() c任务执行完毕- System.currentTimeMillis());} }StopWatch : 0.0022191 seconds ---------------------------------------- Seconds % Task name ---------------------------------------- 0.0011501 52% a任务 0.0005202 23% b任务 0.0005488 25% c任务Thread-2 c任务执行完毕-1727615633886 Thread-1 b任务执行完毕-1727615634883 Thread-0 a任务执行完毕-1727615635882StopWatch 的 start() 和 stop() 方法调用是在主线程中顺序执行的但是实际的任务a(), b(), c()是在不同的线程中异步执行的。这会导致 StopWatch 的 stop() 方法在相应的任务线程实际完成之前就被调用了因此 StopWatch 记录的时间将远小于任务实际执行的时间。 3、任务的执行是异步的但主程序的继续执行是同步的 使用f1.get(), f2.get(), f3.get()确保主线程等待这些任务完成。 即每个任务都使用了独立的 FutureTask 和线程实例。但是有一点需要注意在 main 线程中调用 f1.get(), f2.get(), 和 f3.get() 会阻塞 main 线程直到相应的 FutureTask 完成。这实际上意味着 main 线程会等待每个任务完成后再继续执行下一个任务这可能会使得并行执行的优势变得不那么明显因为任务实际上是顺序执行的尽管它们在不同的线程中运行。因此从主线程的角度来看这些任务并不是“真正”的异步执行因为主线程在等待每个任务完成。然而从操作系统或 JVM 的角度来看这些任务确实是在不同的线程中并行执行的如果系统资源允许的话。从全局角度来看每个任务虽然是异步启动的但它们依次等待完成这使得整个程序看起来是按顺序执行的。主程序通过调用 f1.get(), f2.get(), 和 f3.get() 等待每个任务完成。这意味着主程序会阻塞直到所有任务都执行完毕。这种方式确保了任务的执行时间能够被准确地测量但也意味着主程序不会在所有任务完成之前继续执行其他操作。由于您还希望使用 StopWatch 来测量每个任务的执行时间您需要在某个地方等待这些任务完成所以通过调用 f1.get(), f2.get(), 和 f3.get() 在主线程中阻塞了这些 FutureTask 的执行结果。 总结来说任务的执行是异步的但主程序的继续执行是同步的因为它等待所有异步任务完成。 package com.atguigu.structure;import org.springframework.util.StopWatch; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask;public class Demo {public static void main(String[] args) throws InterruptedException, ExecutionException {StopWatch stopWatch new StopWatch();// 为每个任务分别计时stopWatch.start(a任务);FutureTask f1 new FutureTask(() - {a();return null;});new Thread(f1).start();f1.get();stopWatch.stop();stopWatch.start(b任务);FutureTask f2 new FutureTask(() - {b();return null;});new Thread(f2).start();f2.get();stopWatch.stop();stopWatch.start(c任务);FutureTask f3 new FutureTask(() - {c();return null;});new Thread(f3).start();f3.get();stopWatch.stop();// 打印结果System.out.println(stopWatch.prettyPrint());}public static void a(){try {Thread.sleep(3000);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println(Thread.currentThread().getName() a任务执行完毕- System.currentTimeMillis());}public static void b(){try {Thread.sleep(2000);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println(Thread.currentThread().getName() b任务执行完毕- System.currentTimeMillis());}public static void c(){try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println(Thread.currentThread().getName() c任务执行完毕- System.currentTimeMillis());} }Thread-0 a任务执行完毕-1727619923910 Thread-1 b任务执行完毕-1727619925934 Thread-2 c任务执行完毕-1727619926943 StopWatch : 6.0475203 seconds ---------------------------------------- Seconds % Task name ---------------------------------------- 3.0258235 50% a任务 2.0129727 33% b任务 1.0087241 17% c任务
http://www.dnsts.com.cn/news/181276.html

相关文章:

  • 珠海网站建设杰作网站备案 国外域名
  • 微信公众号网站建设营销广告
  • 手机网站建设教程wordpress固定链接翻页404
  • 新闻类网站的设计wordpress智能机器人
  • 建设银行内部审批哪些网站淄博网站设计
  • 网站建设服务谁便宜南通关键词优化平台
  • wordpress建设下载网站ps网站参考线怎么做
  • 网页设计素材网站知乎济南网站建设报价
  • 做机械一般做那个外贸网站外贸电子商务网站
  • 宝山区建设用地事务所网站没有网站可以做cpc吗
  • php 资讯网站网站推广的优势
  • 小程序网站备案wordpress移动端显示图片
  • 学网站开发有用么地方社区网站 备案
  • 服务器做jsp网站教程视频群晖可以做网站吗
  • 网站需要维护吗ssl外贸网站
  • 建设主管部门网站网站技能培训班有哪些
  • 成都网站优化步骤网站建设公司推荐 金石下拉
  • 北京网站建设华网天下定制新网站建设风格
  • 网站和软件的区别广州网站建设智能 乐云践新
  • 网站制作设计教程知名网站建设公司 北京
  • 外包建网站多少钱asp+php+mysql+aspx环境搭建与6种网站安装2
  • 陵水网站建设报价织梦末班和dw建设网站哪个方便优化
  • 如何做好网站开发项目需求分析做测算的网站
  • 上海网站建设caiyiduo网站设计与实现
  • 阿里云的国际网站建设一起做网店网站
  • 网站的优势是什么意思网站模板修改器
  • 网站 成本wordpress iot插件
  • 自建站shopify大朗网站建设
  • 威海网站建设联系方式学校网站建设评分标准
  • 网站建设的价值是什么意思金融网站建设公司