首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当所有JAVA线程都是使用OS库创建的本机线程时,为什么引入Fork/Join框架?

当所有JAVA线程都是使用OS库创建的本机线程时,为什么引入Fork/Join框架?
EN

Stack Overflow用户
提问于 2020-07-19 14:28:16
回答 1查看 131关注 0票数 1

我所知道的是,在JDK1.2之后,所有Java线程都是使用“本地线程模型”创建的,该模型在JNI和OS线程库的帮助下将每个Java线程与一个OS线程关联起来。

因此,从下面的文本中,我相信现在创建的所有Java线程都可以实现多核处理器的使用:

多个本机线程可以共存。因此,它也被称为多到多模型。该模型的这种特性使得它能够充分利用多核处理器的优势,并在单独的核上同时执行线程。

但是,当我读到在JAVA Compelete引用中的JDK 7中引入的Fork/Join框架时:

虽然最初的并发API本身令人印象深刻,但JDK 7对它进行了显著的扩展。最重要的是Fork/Join Framework。Fork/Join Framework为创建使用多处理器(如多核系统中的处理器)的程序提供了便利。因此,它简化了程序的开发,其中两个或两个以上的部分以真正的同时执行(即真正的并行执行),而不仅仅是时间切片。

这让我不禁要问,当‘模型’从JDK 3开始存在时,为什么会引入这个框架呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-19 15:01:59

framework框架并不取代原来的低级线程API;它使某些类的问题更容易使用。

原始的低级别线程API可以工作:您可以使用安装在系统上的CPU上的所有CPU和所有核心。如果您尝试实际编写多线程应用程序,您将很快意识到这很难。

低级别的线程API可以很好地解决线程在很大程度上是独立的,并且不必在彼此之间共享信息--换句话说,就是令人尴尬的平行问题。然而,许多问题并不是这样的。在底层API中,很难以安全(产生正确的结果并没有死锁等不必要的效果)和高效的(不浪费系统资源)的方式实现复杂的算法。

Java叉/join框架是在叉/连接模型上实现的,它是作为一种高级机制创建的,以便更容易地将并行计算应用于分治算法

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62981559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档