当前位置: 首页 > 知识库问答 >
问题:

基于本机CPU或字节码的单个指令的Java线程执行

颛孙飞
2023-03-14

首先,我可能无法清楚地描述问题,请留下评论,因为我对我正在询问的案例了解有限

来自OCA/OCPJava®SE 7程序员I

将语句计数到多个Java字节码指令中,您实际上无法控制执行哪些本机指令。大多数Java运行时环境都是基于JIT(实时编译器)的,这意味着您不知道count语句何时或是否会被转换为本机CPU指令,也不知道它最终是作为一条指令还是多条指令。

我的问题是,如果一条语句通过JIT转换为本机CPU指令,或者在多线程执行指令方面仍然使用java字节码,这有什么不同?

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

对于ex,if c语句fromvoid example(){int c=0;c;}是字节码上的1条指令,但本机CPU上有3条指令,JIT不会将方法示例转换为本机CPU指令,线程t执行语句c,该语句将作为字节码指令(1条指令)或本机CPU(3条指令)执行吗?

任何人都可以为我提供关于我所问主题的资源?

共有1个答案

怀展
2023-03-14

这句话是对的。您无法控制执行哪些本机指令。有很多体系结构和VM类型,您无法确定所有这些。

对于特定情况下的字节码,如果您感到好奇,可以尝试使用-XX:UnlockDiagnosticVMOptions-XX:PrintAssembly和其他诊断标志。

 类似资料:
  • 本文向大家介绍zabbix执行远程主机的脚本或指令详解,包括了zabbix执行远程主机的脚本或指令详解的使用技巧和注意事项,需要的朋友参考一下 场景需求 1.我们可以通过zabbix_server的web界面的脚本功能实现对已经安装了zabbix_agent主机实现远程关机而不用手动登陆然后输入关机指令 2,。我们可以通过zabbix_server的web界面的脚本功能实现某个服务的启动关闭和重启

  • 基于每个JVM的CPU核数创建线程与在多个JVM上运行的线程在CPU核数上创建线程数,条件是所有JVM运行在共享同一CPU的一个物理系统上有何不同?换句话说,一个并行运行8个线程的多线程Java程序vs在共享同一CPU的8个不同JVM上运行的同一多线程程序? 下面我给出了一些我发现的用线程实现并行处理的方法,但是我不能理解它们之间的本质区别? 方法一:线程周期性地查询数据库更改,并行地启动(长时间

  • 我读到java中的线程调度程序在单个进程中每次只运行一个线程。 假设我们有一个JVM运行一台CPU机器。因此,如果我启动10个线程,它们将由同一个线程调度程序管理。

  • 问题内容: 我使用线程池来执行任务,这些任务大多基于cpu并带有一点I / O,其大小比cpus的数量大一倍。 假设有一个简单的程序将所有任务提交给该执行程序,并且几乎没有做其他事情,那么我认为拥有更大的线程池会减慢速度,因为操作系统必须对它进行cpus切片,才有机会给线程池中的每个线程分配机会。跑。 是正确的吗,如果是这样,这是一个实际问题还是主要是理论问题,即如果我将线程池大小增加到1000,

  • Im使用线程池来执行任务,这些任务主要是基于cpu的,带有一点I/O,大小比cpu的数量大一个。 假设一个简单的程序将它的所有任务提交给这个执行器,而不做其他的事情,我假设有一个更大的线程池会使事情变慢,因为操作系统必须对它进行时间限制,CPU更经常地给线程池中的每个线程一个运行的机会。 这是正确的吗?如果是,这是一个真正的问题还是主要是理论上的问题,即如果我将线程池大小增加到1000,我会注意到

  • 第5章 微机CPU的指令系统 指令系统确定了CPU所能完成的功能,是用汇编语言进行程序设计的最基本部分。如果不熟悉汇编指令的功能及其有关规定,那么,肯定不能灵活运用汇编语言。所以,本章的内容是学习本课程的重点和难点。 5.1 汇编语言指令格式 为了介绍指令系统中指令的功能,先要清楚汇编语言是如何书写指令的,这就象在学习高级语言程序设计时,要清楚高级语言语句的语义、语法及其相关规定一样。 5.1.1