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

定制网站建设费用石家庄网站建设哪家专业

定制网站建设费用,石家庄网站建设哪家专业,旅游类网站设计模板下载,广州新塘做网站在 Java 中#xff0c;并行流 (parallelStream) 和 CompletableFuture 都是处理并发和异步编程的工具#xff0c;但它们在使用场景和适用性上有一些区别。下面是一些指导原则#xff0c;可以帮助你在选择使用并行流或 CompletableFuture 时做出决策#xff1a; 使用场景并行流 (parallelStream) 和 CompletableFuture 都是处理并发和异步编程的工具但它们在使用场景和适用性上有一些区别。下面是一些指导原则可以帮助你在选择使用并行流或 CompletableFuture 时做出决策 使用场景 1. 并行流 (parallelStream) 适用场景: 需要对集合进行并行处理。操作是独立的无需等待其他元素的结果。数据量较大适合并行分割和处理。 优点: 语法简洁易于使用。不需要显式的线程管理。 parallelStream 是 Java 8 引入的一个功能允许对集合进行并行处理。这是传统顺序 stream 的并行版本。以下是一个简要的解释 用法: ListT myList // 一些列表或集合 myList.parallelStream().forEach(element - {// 要在每个元素上并行执行的代码 });解释: parallelStream() 将顺序流转换为并行流。流的元素由多个线程并发处理这有可能提高在多核处理器上的性能。然而重要的是要注意并非所有操作都适合并行处理这取决于任务的性质。 2. CompletableFuture 适用场景: 需要更细粒度的控制例如异步任务之间的依赖关系。需要等待多个异步任务全部完成或任一完成。需要处理异常和结果。 优点: 提供了更灵活的异步编程能力。可以使用回调、组合和链式调用等方式。 CompletableFuture.runAsync 是 Java 8 引入的 CompletableFuture API 的一部分提供了进行异步编程的一种方式。以下是它的工作原理 用法: // 1、使用ForkJoinPool.commonPool()作为它的线程池执行异步代码System.out.println(当前调用者线程为: Thread.currentThread().getName()); CompletableFuture.runAsync(() - {// 异步方法内当前执行线程为:ForkJoinPool.commonPool-worker-1System.out.println(异步方法内当前执行线程为: Thread.currentThread().getName());System.out.println(---------------------); });CompletableFutureVoid future CompletableFuture.runAsync(() - {// 异步执行的代码 });//2、使用指定的线程池执行异步代码。此异步方法无法返回值。System.out.println(当前调用者线程为: Thread.currentThread().getName()); // fixme 根据阿里规约 建议真实开发时使用 ThreadPoolExecutor 定义线程池 ExecutorService threadPool Executors.newFixedThreadPool(10);CompletableFuture.runAsync(() - {// 异步方法内当前执行线程为:pool-1-thread-1System.out.println(异步方法内当前执行线程为: Thread.currentThread().getName());System.out.println(111); }, threadPool);// 演示代码执行完后关闭线程池 threadPool.shutdown(); 解释: runAsync 是一个工厂方法创建一个新的 CompletableFuture 并在单独的线程中运行指定的 Runnable。它返回一个 CompletableFutureVoid因为 Runnable 不产生结果。你可以附加回调或组合多个 CompletableFuture 实例以链接异步操作。 具体指导原则 并行流parallelStream 与 CompletableFuture的选择 计算密集型操作推荐使用 parallelStream: 原因 计算密集型操作可以充分利用并行流的简单实现和高效性能。并行流的底层实现会自动分配工作给可用的处理器核心提高整体计算速度。 含有I/O操作推荐使用 CompletableFuture: 原因 CompletableFuture 提供更灵活的异步编程能力特别适用于等待I/O的操作。可以根据等待和计算的比率灵活地控制线程数避免不必要的线程创建。在涉及到等待I/O的操作时使用 CompletableFuture 会更加灵活可以避免并行流的延迟特性造成的难以判断的情况。通过 CompletableFuture.supplyAsync 创建异步任务然后使用 CompletableFuture.allOf 等待它们全部完成。示例 ListCompletableFutureInteger futures myList.stream().map(element - CompletableFuture.supplyAsync(() - performIoOperation(element))).collect(Collectors.toList());CompletableFutureVoid allOf CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])); allOf.join();ListInteger result futures.stream().map(CompletableFuture::join).collect(Collectors.toList());1. 简单的并行处理: 如果任务可以独立并行处理: 选择并行流 (parallelStream): 示例对集合中的元素执行相同的操作互不影响。myList.parallelStream().forEach(element - { // 并行处理的操作 }); 2. 复杂的异步任务: 如果任务之间有依赖关系需要更细粒度的控制: 选择 CompletableFuture: 示例一个异步任务的结果依赖于另一个异步任务的完成。CompletableFutureVoid future CompletableFuture.runAsync(() - {// 异步任务1 }).thenRun(() - {// 异步任务2依赖于任务1的完成 }); 3. 等待多个任务完成: 如果需要等待多个任务全部完成或任一完成: 选择 CompletableFuture: 示例等待多个异步任务的全部完成或任一完成。CompletableFutureVoid future1 CompletableFuture.runAsync(() - {// 异步任务1 });CompletableFutureVoid future2 CompletableFuture.runAsync(() - {// 异步任务2 });CompletableFutureVoid combinedFuture CompletableFuture.allOf(future1, future2); combinedFuture.join(); // 等待全部完成4. 异常处理: 如果需要更丰富的异常处理: 选择 CompletableFuture: 示例对每个异步任务进行异常处理。CompletableFutureVoid future CompletableFuture.runAsync(() - {// 异步任务 }).exceptionally(throwable - {// 异常处理return null; // 或提供默认值 });5. 性能考虑: 如果是对集合进行简单操作数据量较大: 选择并行流 (parallelStream): 示例对集合进行简单的映射、过滤等操作。myList.parallelStream().map(element - {// 简单操作return transformedElement; }); 总结 简单的并行处理和集合操作: 选择并行流 (parallelStream) 复杂的异步任务、依赖关系、等待多个任务完成: 选择 CompletableFuture 在实际应用中通常你会根据具体的需求和场景选择合适的工具。有时候也可以结合使用这两者以发挥各自的优势。
http://www.yutouwan.com/news/175163/

相关文章:

  • 孝感公司做网站南通网站建设
  • 郑州企业网站排行多种网站
  • 2023年小微企业所得税seo岗位有哪些
  • 苏州网站开发网站开发费用福州百度快速优化排名
  • spark网站开发微信公众号需要开发吗
  • 天地心公司做网站怎样品牌营销策划有限公司
  • 网站怎么做移动的图片手机电影网站建设
  • 江苏建设银行网站科技网站制作
  • 网站开发的就业方向北京地区网站制作公司
  • 网站建设网站建设哪里有苏州seo公司 翼好
  • 做房地产公司网站的费用郑州管家网站托管
  • 做响应式网站设计图是多大的网站显示建设中
  • 深圳住房与建设局官方网站西安网上注册公司流程
  • 建立企业网站方案清远 网站建设
  • 葫芦岛手机网站建设郴州网络营销推广
  • 公司做网站的费用属什么用途个人网站需要什么页面
  • 上海发布官方网长沙百度快速排名优化
  • 免费空间大的网盘重庆seo计费管理
  • 做网站难还是app难网站的作用有哪些
  • 怎样提高网站收录做化妆品代理在那些网站比较多
  • 网站后台添加东西不能粘贴哈尔滨网站建设1元钱
  • 网站开发的几个步骤昆明网站建设首选公司
  • 境外网站建设wordpress文章表
  • 网站都是用什么编写的网络营销策划书2000字
  • 企业 北京 响应式网站制作文字游戏做的最好的网站
  • 男女做暖暖的视频试看网站网站推广指标
  • 网站正能量晚上不用下载进入免费网时代教育培训机构
  • wordpress 建的网站专业的网站开发团队
  • 关于网站建设的请示凡科建站登录界面
  • 关于小城镇建设网站网站界面设计如何实现功能美与形式美的统一?