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

12306网站为什么做不好使三亚婚纱摄影 织梦网站源码

12306网站为什么做不好使,三亚婚纱摄影 织梦网站源码,中建名城建设有限公司 网站,4399电脑版网页在线玩优化代码时#xff0c;除了Async注解#xff0c;项目中如何使用多线程异步调用#xff1f; 举个例子#xff0c;去餐厅吃饭的时候。先点餐#xff0c;厨师做菜#xff0c;在厨师做菜的时候打游戏#xff0c;然后根据厨师做的菜的口味去买矿泉水还是可乐。这样#xff0… 优化代码时除了Async注解项目中如何使用多线程异步调用 举个例子去餐厅吃饭的时候。先点餐厨师做菜在厨师做菜的时候打游戏然后根据厨师做的菜的口味去买矿泉水还是可乐。这样厨师做菜并没有阻塞你打游戏并且还是能接收到厨师任务的结果。与2个任务同步进行相比缩短了时间。 CompletableFuture FutureTask也行但不用 工具类 public class SmallTools {public static void sleepMillis(long millis){try {Thread.sleep(millis);}catch (InterruptedException exception){exception.printStackTrace();}}public static void printTimeAndThread(String tag){String result new StringJoiner(\t|\t).add(String.valueOf(System.currentTimeMillis())).add(String.valueOf(Thread.currentThread().getId())).add(Thread.currentThread().getName()).add(tag).toString();System.out.println(result);} }测试1 说明CompletableFuture.supplyAsync会立即在后台线程池中异步执行 lambda 表达式不需要显式调用。 public class Main {public static void main(String[] args) {SmallTools.printTimeAndThread(小白进入餐厅);SmallTools.printTimeAndThread(小白点了 番茄炒蛋 一碗米饭);CompletableFutureString cf1 CompletableFuture.supplyAsync(() - {SmallTools.printTimeAndThread(厨师炒菜);SmallTools.sleepMillis(4000);SmallTools.printTimeAndThread(cf1线程结束);return 番茄炒蛋;});SmallTools.printTimeAndThread(小白开始打王者);SmallTools.sleepMillis(5000);SmallTools.printTimeAndThread(主线程结束);} } ------ 1715099888262 | 1 | main | 小白进入餐厅 1715099888262 | 1 | main | 小白点了 番茄炒蛋 一碗米饭 1715099888279 | 1 | main | 小白开始打王者 1715099888279 | 9 | ForkJoinPool.commonPool-worker-9 | 厨师炒菜 1715099892285 | 9 | ForkJoinPool.commonPool-worker-9 | cf1线程结束 1715099893282 | 1 | main | 主线程结束测试2 同时开启多个异步调用 public class Main {public static void main(String[] args) {SmallTools.printTimeAndThread(小白进入餐厅);SmallTools.printTimeAndThread(小白点了 番茄炒蛋 一碗米饭);CompletableFutureString cf1 CompletableFuture.supplyAsync(() - {SmallTools.printTimeAndThread(厨师炒菜);SmallTools.sleepMillis(4000);SmallTools.printTimeAndThread(cf1线程结束);return 番茄炒蛋;});CompletableFutureString cf2 CompletableFuture.supplyAsync(() - {SmallTools.printTimeAndThread(服务员打饭);SmallTools.sleepMillis(4000);SmallTools.printTimeAndThread(cf2线程结束);return 饭;});SmallTools.printTimeAndThread(小白开始打王者);SmallTools.sleepMillis(5000);SmallTools.printTimeAndThread(主线程结束);} } ------ 1715100175308 | 1 | main | 小白进入餐厅 1715100175308 | 1 | main | 小白点了 番茄炒蛋 一碗米饭 1715100175325 | 1 | main | 小白开始打王者 1715100175326 | 9 | ForkJoinPool.commonPool-worker-9 | 厨师炒菜 1715100175326 | 10 | ForkJoinPool.commonPool-worker-2 | 服务员打饭 //睡了4秒 1715100179338 | 9 | ForkJoinPool.commonPool-worker-9 | cf1线程结束 1715100179338 | 10 | ForkJoinPool.commonPool-worker-2 | cf2线程结束 1715100180331 | 1 | main | 主线程结束Process finished with exit code 0 测试3 等待异步调用的结果根据结果再处理逻辑 public class Main {public static void main(String[] args) {SmallTools.printTimeAndThread(小白进入餐厅);SmallTools.printTimeAndThread(小白点了 番茄炒蛋 一碗米饭);CompletableFutureString cf1 CompletableFuture.supplyAsync(() - {SmallTools.printTimeAndThread(厨师炒菜);SmallTools.sleepMillis(4000);SmallTools.printTimeAndThread(厨师打饭);SmallTools.sleepMillis(2000);return 番茄炒蛋 米饭;});SmallTools.printTimeAndThread(小白开始打王者);SmallTools.printTimeAndThread(String.format(%s做好了,小白开吃,cf1.join()));} }----结果 1715098991592 | 1 | main | 小白进入餐厅 1715098991592 | 1 | main | 小白点了 番茄炒蛋 一碗米饭 1715098991608 | 1 | main | 小白开始打王者 1715098991610 | 9 | ForkJoinPool.commonPool-worker-9 | 厨师炒菜 //睡了4秒 1715098995625 | 9 | ForkJoinPool.commonPool-worker-9 | 厨师打饭 //睡了2s 1715098997637 | 1 | main | 番茄炒蛋 米饭做好了,小白开吃测试4 链式调用开启2个线程第二个线程等待第一个线程结束后在异步调用 public class Main {public static void main(String[] args) {SmallTools.printTimeAndThread(小白进入餐厅);SmallTools.printTimeAndThread(小白点了 番茄炒蛋 一碗米饭);CompletableFutureString cf1 CompletableFuture.supplyAsync(() - {SmallTools.printTimeAndThread(厨师炒菜);SmallTools.sleepMillis(4000);return 番茄炒蛋;}).thenCompose(dish - CompletableFuture.supplyAsync(()-{SmallTools.printTimeAndThread(厨师打饭);SmallTools.sleepMillis(2000);return 米饭;}));SmallTools.printTimeAndThread(小白开始打王者);SmallTools.printTimeAndThread(String.format(%s 做好了,小白开吃,cf1.join()));} } ------ 1715100509306 | 1 | main | 小白进入餐厅 1715100509306 | 1 | main | 小白点了 番茄炒蛋 一碗米饭 1715100509323 | 9 | ForkJoinPool.commonPool-worker-9 | 厨师炒菜 1715100509323 | 1 | main | 小白开始打王者 //等待4秒 1715100513328 | 9 | ForkJoinPool.commonPool-worker-9 | 厨师打饭 //等待2秒 1715100515342 | 1 | main | 米饭 做好了,小白开吃测试5 同时开启2个异步调用其实和测试2没什么区别代码好看点 public class Main {public static void main(String[] args) {SmallTools.printTimeAndThread(小白进入餐厅);SmallTools.printTimeAndThread(小白点了 番茄炒蛋 一碗米饭);CompletableFutureString cf1 CompletableFuture.supplyAsync(() - {SmallTools.printTimeAndThread(厨师炒菜);SmallTools.sleepMillis(4000);return 番茄炒蛋;}).thenCombine(CompletableFuture.supplyAsync(() - {SmallTools.printTimeAndThread(服务员蒸饭);SmallTools.sleepMillis(4000);return 米饭;}),(dish,rice) - {SmallTools.printTimeAndThread(服务员打饭);return dish rice;});SmallTools.printTimeAndThread(小白开始打王者);SmallTools.printTimeAndThread(String.format(%s 做好了,小白开吃,cf1.join()));} } ------ 1715101146820 | 1 | main | 小白进入餐厅 1715101146820 | 1 | main | 小白点了 番茄炒蛋 一碗米饭 1715101146837 | 9 | ForkJoinPool.commonPool-worker-9 | 厨师炒菜 1715101146837 | 10 | ForkJoinPool.commonPool-worker-2 | 服务员蒸饭 1715101146838 | 1 | main | 小白开始打王者 //睡了4秒 1715101150852 | 9 | ForkJoinPool.commonPool-worker-9 | 服务员打饭 1715101150858 | 1 | main | 番茄炒蛋 米饭 做好了,小白开吃
http://www.dnsts.com.cn/news/214337.html

相关文章:

  • 网站建设合同协议第一模板网站
  • 四川杰新建设工程网站淘宝可以在哪些网站上面打做推广
  • 网站建设方案如何写聚焦婚纱摄影
  • 主机屋网站wordpress 本地视频链接
  • 网站建设验收合同模板yum nginx wordpress
  • 网站不收录排名会降吗网站建设数据库怎么传送
  • 印尼网站建设费用广州网页设计培训视频
  • 综合电商网站建设需求文档深圳专业网站建设要求
  • 织梦做双语版网站网站建设中故障排除方法
  • 广电如何做视频网站网站怎样盈利
  • 建网站最低需要多少钱深圳优化公司公认安高粱seo
  • 教育网站解决方案网站建设小程序开发公司
  • 做设计的兼职网站深圳平台设计
  • ppt要怎么做网站wordpress 虾米页面
  • 江苏德丰建设集团网站wordpress wood3主题
  • 芜湖有哪些招聘网站做海报的素材哪个网站
  • 嘉兴网站建设电话平台网站建设 厦门
  • 安徽建站之星国内app开发公司
  • 顺德公益网站制作如何做英文网站的中文网
  • 网站界面设计说明天眼企查查网官网
  • 做链接哪个网站好广州市开发区建设局官方网站
  • 站长统计app官方网站去什么网站找做电影的素材
  • 免费网站安全软件下载电商平台网站多少钱
  • 如何提高网站seo排名wordpress ajax查询文章
  • 导航网站后台源码建设企业网站管理系统目的
  • 建设银行企业网站无法打印回单平潭综合实验区建设局网站
  • 网站制作套餐wordpress+防止采集
  • 域名被墙检测网站嘉鱼网站建设
  • 住房和城乡建设部网站 投诉哪个淘宝客网站最好
  • 网站验证码文件常州网站开发培训价格