一直在研究Java语言中的隐式和显式并发性,经过相当多的研究后,想要澄清一些问题。
谢谢
发布于 2016-01-15 15:26:38
隐式并行是指编译器在没有程序员“任何”提示的情况下并行执行某些操作的能力。如果要执行的计算具有某些属性(例如,并行作业之间不存在数据依赖),这是可以实现的。
Java流是(引用Oracle的文档)支持顺序和并行聚合操作的元素序列,与集合有根本的不同,因为
1)集合的设计是为了快速访问和操作集合的元素
2) _Stream_s不是要修改的,而是要在源元素和结果元素之间创建一种管道。结果元素是创建的,将一个操作(通常用函数式/lambda样式描述)应用于源。这种计算可以安全地划分为子管道,并以并行方式进行处理。
组成此管道的函数必须具有以下属性: 1)必须是非干扰的(它们不修改流源);2)是无状态的(它们的结果不应取决于在执行流管道时可能发生的任何状态)。请看这里
显式并行(顾名思义)是由程序员实现的,它可以产生与needs.Those元素通常是线程或进程一样多的(计算元素) (请看这里的差别 --这些计算元素同时执行,并由程序员来编排所有操作,以产生正确的结果(例如显式同步线程、交换消息、进行事务操作等)。
https://stackoverflow.com/questions/34796656
复制相似问题