首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java 8流并行处理过程中,所有处理器内核的缓存是否是同步的?

在Java 8流并行处理过程中,所有处理器内核的缓存是否是同步的?
EN

Stack Overflow用户
提问于 2015-08-05 09:10:26
回答 1查看 59关注 0票数 1

如果我们在多核处理器上工作,我们需要这些核心的缓存是同步的,如果一个任务被划分并分配到不同的核心来处理。Java 8流库是如何实现这一点的?在Java 8流并行处理过程中,所有处理器内核的缓存是否是同步的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-05 16:06:17

这是Java内存模型的保证之一。只要您的程序正确地同步(通过synchronizedLock或其他形式的同步),您的共享内存对所有线程都是可见的。

不是说缓存将是“同步的”,而是在访问适当同步变量之前重新加载缓存,并在写入适当同步变量时刷新缓存。

JLS §17.4.3

在顺序一致的执行中,对所有单独的操作(例如读和写)都有一个总的顺序,这与程序的顺序是一致的,而且每个单独的操作都是原子的,每个线程都可以立即看到。

JLS §17.3

需要注意的是,Thread.sleepThread.yield都没有任何同步语义。特别是,编译器不必在调用Thread.sleepThread.yield之前将缓存在寄存器中的写操作刷新到共享内存,编译器也不必在调用Thread.sleepThread.yield之后重新加载缓存在寄存器中的值。

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

https://stackoverflow.com/questions/31828124

复制
相关文章

相似问题

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