gpt4 book ai didi

java - Java线程执行单条指令是基于 native CPU还是字节码

转载 作者:太空宇宙 更新时间:2023-11-04 12:11:17 25 4
gpt4 key购买 nike

首先,我可能没有描述清楚问题,请发表评论,因为我对我所询问的案例了解有限

摘自 OCA/OCP Java® SE 7 程序员 I 和 II 学习指南

count++ statement into multiple Java bytecode instructions, you really have no control over what native instructions are executed. The JIT (Just In Time compiler)– based nature of most Java runtime environments means you don't know when or if the count++ statement will be translated to native CPU instructions and whether it ends up as a single instruction or several.

我的问题是,如果一条语句通过 JIT 翻译为 native CPU 指令,或者仍然在 java 字节码上,那么在多线程执行指令方面有什么不同吗?

我的印象是线程在 native CPU指令级别上工作,而不是字节码指令级别,因此即使JIT是否将方法转换为 native CPU指令,低级线程最终也会执行翻译后的字节码的 native CPU指令。但如果这是真的,这意味着引用是错误的,因为最终线程将使用 native cpu 指令,除了 JIT 是否将该代码转换为 native cpu 之外,您能确认一下吗?

例如,如果 void example(){int c=0;c++;} 中的 c++ 语句在字节码上是 1 条指令,但在 native CPU 上是 3 条指令,并且 JIT 不会将方法示例转换为 native CPU 指令,并且线程 T 执行语句 c++,该语句将作为字节码指令(1 条指令)还是 native CPU(3 条指令)执行?

任何人都可以向我提供有关我所询问的主题的资源吗?

最佳答案

引用是正确的。您无法控制执行哪些 native 指令。架构和虚拟机类型有很多种,您无法确定所有这些。

对于您的特定情况的字节码,如果您好奇,可以尝试使用 -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly 和其他 Diagnostic flags一起玩。

关于java - Java线程执行单条指令是基于 native CPU还是字节码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39839590/

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