use*_*082 34 java parallel-processing concurrency multithreading
我一直在谷歌做一些研究,并且无法理解java中并发和并行程序之间的差异(如果有的话).我所看到的一些信息表明两者之间没有差异.是这样的吗?
Str*_*ior 21
这取决于谁来定义它.创建Go编程语言的人调用代码Concurrent,如果它被分解为可以并行处理的片段,而Parallelism意味着这些片段实际上是同时运行的.
由于这些是编程原则,编程语言与它们的定义无关.但是,Java 8将具有更多功能,以实现并发性和并行性,而不会过多地破坏代码.例如,代码如下:
List<Integer> coolItemIds = new List<Integer>();
for(Item item : getItems())
{
if(item.isCool())
{
int itemId = item.getId();
coolItemIds.add(item);
}
}
Run Code Online (Sandbox Code Playgroud)
...这是非并发和非并行的,可以这样写(我的语法可能不对,但希望你明白了):
Iterable<Item> items = getItems();
Iterable<Item> coolItems = items.filter(item -> item.isCool());
Iterable<Integer> coolItemIds = coolItems.map(item -> item.getId());
Run Code Online (Sandbox Code Playgroud)
上面的代码是以并发方式编写的:没有一个给定的代码要求一次过滤一个coolItems,或者你一次只能调用getId()
一个项目,或者甚至是列表开头的项目需要在项目结束前进行过滤或映射.根据Iterable
返回的类型getItems()
,给定的操作可能会或可能不会并行运行,但您编写的代码是并发的.
也感兴趣:
Pat*_*k87 16
我想这取决于你的定义,但我的理解大致如下:
据我所知,这两个术语都不是特定于Java的,或者具有任何特定于Java的细微差别.
并行化(或并行或并行计算)是一种计算形式,其中许多计算同时进行.实质上,如果CPU密集型问题可以划分为较小的独立任务,则可以将这些任务分配给不同的处理器
并发性更多的是多任务处理,它执行许多操作但不是必需的CPU密集型问题.
归档时间: |
|
查看次数: |
18535 次 |
最近记录: |