【发布时间】:2017-01-10 08:39:08
【问题描述】:
Java 或一些类似语言中的并发是通过线程或任务级并行实现的。但在后台,硬件或运行时是否也使用 ILP 来实现最佳性能。
进一步详细说明:在具有多个线程(例如每个核心 2 个)(即每个系统总共 8 个线程)的多核处理器(例如每个系统 4 个)中,java 线程在几个(在这种情况下为 8 个)处理器之一中执行线程。但是,如果系统确定所有或几个其他线程除了保持理想之外什么都不做,硬件或运行时是否可以进行任何合法的重新排序并在相同或其他内核上的其他线程中执行它们并将结果取回(或在 main记忆)
我很担心 java 实现是否允许这样做,或者什至由硬件来独立处理这个问题,即使 JVM 甚至不知道任何事情。
【问题讨论】:
-
Java 语言的实现不止一种,Java 实现的硬件平台也不止一种。它们不必都以完全相同的方式工作:它们只需要忠实地实现 Java 语言规范 (JLS)。 JLS 中没有提及您所询问的内容。
标签: java multithreading concurrency instruction-set happens-before