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

中国做外贸最好的网站有哪些哪个网站学seo是免费的

中国做外贸最好的网站有哪些,哪个网站学seo是免费的,什么行业做网站合适,市政浙江建设培训中心网站前言 🍊作者简介: 不肯过江东丶,一个来自二线城市的程序员,致力于用“猥琐”办法解决繁琐问题,让复杂的问题变得通俗易懂。 🍊支持作者: 点赞👍、关注💖、留言&#x1f4…

前言

🍊作者简介: 不肯过江东丶,一个来自二线城市的程序员,致力于用“猥琐”办法解决繁琐问题,让复杂的问题变得通俗易懂。
🍊支持作者: 点赞👍、关注💖、留言💌~

相信各位小伙伴对 Stream 都不陌生,它是 Java 8 及以后版本中引入的一个新特性,用于处理集合数据。Stream 是对集合(Collection)对象功能的增强,与 Lambda 表达式结合,可以提高编程效率、间接性和程序可读性。Stream API 中为我们提供了很多高效且易用的方法,大聪明的好朋友 —— 大明白就对这些方法情有独钟,但是就在前几天,却因为他在项目中使用了 Stream.parallel() 而引发了一个小小的意外情况… …

这里卖个关子😝~ 在说大明白引发的意外情况之前,我们先来一起看看什么是Stream.parallel()

Stream.parallel()

Stream.parallel() 方法用于将流操作转换为并行操作,以便在多个线程上并行执行。并行流是一种可以同时在多个线程上执行操作的流,它将流的元素分割成多个子集,每个子集在不同的线程上独立处理,最后将结果合并。使用 parallel() 方法可以轻松开启并行流处理模式,无需显式管理线程和同步。

List<Integer> numbers = ...; // 假设这里有一个包含大量正整数的List集合numbers.stream() // 创建顺序流.parallel() // 转换为并行流.filter(n -> n % 2 == 0) // 并行流操作 - 过滤List集合中的偶数.map(n -> n * 2) // 并行流操作 - 将过滤出来的偶数×2.forEach(System.out::println); // 并行流操作 - 打印结果

在上面的示例中,parallel() 方法将顺序流转换为并行流,后续的 filter()、map() 和 forEach() 操作将在多个线程上并行执行,从而加速数据处理。我们下面再看看它的底层原理👇

当调用 Stream.parallel() 方法时,它实际上会返回一个新的并行流对象,这个流对象可以在多个线程上并行执行流操作。下面是 Stream.parallel() 方法的大致工作原理:
① 并行流的划分和分治:当我们对并行流进行操作时,Java 会使用 Fork/Join 框架将数据划分成多个小任务,并将这些小任务分配给多个线程来并行执行。这个过程涉及到递归地将大任务分解为小任务,直到小任务足够简单可以直接求解。
② 工作窃取(Work Stealing):Fork/Join 框架采用工作窃取算法来实现任务的调度和执行。在工作窃取的过程中,空闲的线程会主动去其他线程的任务队列中窃取任务执行。这种方式能够充分利用线程资源,提高并行处理的效率。
③合并结果:在并行流的操作中,各个线程会并行地对数据进行处理,最后需要将各个线程的处理结果进行合并,得到最终的结果。这一过程涉及到结果的收集和合并,确保最终的结果是完整且正确的。

这里我们又引申出了一个新的概念 —— Fork/Join 框架。Fork/Join 框架是 Java 7 中引入的用于支持并行计算的框架,是一种并行计算模式,用于解决可以被分解成更小的可并行任务的问题。该模式包含两个关键操作:Fork(分解)和Join(合并)。在 Fork/Join 模式中,原始问题被递归地分解为更小的子问题,直到达到可以并行解决的最小单位。这个过程被称为 Fork。每个子问题可以独立地在不同的处理器上执行,并行地求解部分问题。 一旦所有的子问题都被解决,就会进行 Join 操作。Join 操作将所有子问题的结果合并为最终的解决方案。这种分解和合并的过程可以视为树形结构,其中每个节点代表一个子问题。

Fork/Join 模式最适用于可以自然地分解为多个独立子问题的计算密集型任务。它适用于多核处理器或并行计算环境,其中可以充分利用并行性。Java 平台提供了 Fork/Join 框架,用于实现该模式。它包括了一个线程池(ForkJoinPool)任务(ForkJoinTask) 的概念。任务可以是可分解的子问题,也可以是执行最终计算的任务。通过 ForkJoinPool,可以将任务提交给线程池执行,自动实现任务的分解和合并过程。Fork/Join 模式的优点在于它能够充分利用多核处理器的并行性,提高计算效率。

📌 在这里我们就先对 Fork/Join 框架做一个简单的介绍,后续大聪明会单独出一篇博客对 Fork/Join 框架进行详细的介绍。

咱们言归正传,有些小伙伴看到“线程池(ForkJoinPool)”的时候可能就已经猜测到大明白遇倒的意外情况和线程有关系了。Stream.parallel() 并行流默认使用的是 ForkJoinPool.commonPool() 作为线程池,该线程池默认最大线程数就是 CPU 核数。正是因为大明白对并行流操作的原理不清楚,他在没有配置线程池的情况下,通过并行流做了数据库的大量批量更新操作,于是最大线程数只有 CPU 核数,最终导致在批量更新的时候出现了线程阻塞的情况,从而出现了这个小小的意外。

通过这件事应该也可以给各位小伙伴提个醒,在实际使用时需要慎重考虑并行化带来的影响,并确保线程安全性和并发性。

① 线程安全:并行流并不能保证线程安全性,因此,如果流中的元素是共享资源或操作本身不是线程安全的,你需要确保正确同步或使用线程安全的数据结构。
② 资源消耗:并行流默认使用的线程池大小可能与机器的实际物理核心数相适应,但也可能与其他并发任务争夺系统资源。
③ 结果一致性:并行流并不保证执行的顺序性,也就是说,如果流操作的结果依赖于元素的处理顺序,则不应该使用并行流。
④ 事务处理:在涉及到事务操作时,通常需要避免在并行流中直接处理,如上述例子所示,应当将事务边界放在单独的服务方法内,确保每个线程内的事务独立完成。

小结

本人经验有限,有些地方可能讲的没有特别到位,如果您在阅读的时候想到了什么问题,欢迎在评论区留言,我们后续再一一探讨🙇‍

希望各位小伙伴动动自己可爱的小手,来一波点赞+关注 (✿◡‿◡) 让更多小伙伴看到这篇文章~ 蟹蟹呦(●’◡’●)

如果文章中有错误,欢迎大家留言指正;若您有更好、更独到的理解,欢迎您在留言区留下您的宝贵想法。

你在被打击时,记起你的珍贵,抵抗恶意;
你在迷茫时,坚信你的珍贵,抛开蜚语;
爱你所爱 行你所行 听从你心 无问东西

http://www.dt0577.cn/news/39760.html

相关文章:

  • 网站建设有那几个类型seo外包服务方案
  • 有域名后怎样做网站最近10条重大新闻
  • 上海网站建设做物流一在线代理浏览网址
  • 网站服务器到期了怎么续费地推app
  • 装修公司网站建设方案淘宝seo是指什么
  • 怎么用手机做网站编辑百度热度
  • 网站防止机器注册网络销售渠道有哪些
  • 大庆建网站站长工具网站测速
  • 滨州市滨城区建设局网站东莞seo技术培训
  • 网站详情页用什么软件做网络营销论文3000字
  • 太原建站模板seo在线外链
  • 怎么做网站推广怎么样跨境电商seo什么意思
  • 做网站用什么写潮州网络推广
  • 网站要实名认证怎样做一个网站平台
  • 东莞网站建设代理商成都达洱狐网络科技有限公司
  • 建设公司网站需要钱吗网址查询服务中心
  • 如何解决网站只收录首页的一些办法seo服务加盟
  • 12380网站建设打算7个湖北seo网站推广策略
  • 做毕业设计资料网站好浙江百度查关键词排名
  • 如何优化啊里网站排名惠州seo推广外包
  • 公司网站建设征稿令完美动力培训价格表
  • 张家界网站开发社群营销的方法和技巧
  • 购物网站开发的背景与意义推广seo优化公司
  • 个体户做网站有用吗外链免费发布平台
  • 公司的做网站培训班管理系统 免费
  • 南昌网站建设在哪里免费企业网站建设流程
  • 深圳做网站哪个好公司推广
  • behance网站百度地图优化排名方法
  • 国内知名网站seo公司网站推广
  • 网站开发规范文档河南网站关键词优化