gpt4 book ai didi

java - Java 中的隐式和显式并行

转载 作者:搜寻专家 更新时间:2023-11-01 03:19:29 31 4
gpt4 key购买 nike

一直在研究 Java 语言中的隐式和显式并发,经过大量研究后想弄清一些问题。

  • Java 语言中的隐式并行性是否只能通过使用 Java 8 流来实现?
  • 我是否认为 Java 中的显式并行是通过使用程序员编写的线程来实现的? (不同之处在于隐式并行性应该通过编译器而不是程序员编写代码来实现)?

谢谢

最佳答案

隐式并行是指编译器在没有程序员“任何”提示的情况下并行执行某些操作的能力。如果您要执行的计算具有某些属性(例如,并行作业之间没有数据依赖性),这是可以实现的。

Java 流是(引用 Oracle 的文档)支持顺序和并行聚合操作的元素序列,并且与集合有根本的不同,因为

1) 集合旨在快速访问和操作集合的元素

2) Stream 不是要修改的,而是要在源元素和结果元素之间创建一种管道。结果元素是将操作(通常以函数式/lambda 样式描述)应用于源而创建的。这种计算可以安全地分成子管道并以并行方式处理。

构成此管道的函数必须具有以下属性:1)必须是无干扰的(他们不修改流源);2) 是无状态的(它们的结果不应该依赖于流管道执行期间可能改变的任何状态)。 see here

显式并行性(顾名思义)是由程序员实现的,他可以根据需要生成尽可能多的(计算元素)。这些元素通常是线程或进程(see here for the difference 这些计算元素并发执行并且最多程序员协调所有操作以产生正确的结果(例如显式同步线程、交换消息、进行事务操作等)。

关于java - Java 中的隐式和显式并行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34796656/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com