【发布时间】:2011-05-24 13:35:38
【问题描述】:
看起来我搞砸了 Java 线程/操作系统线程和解释语言。
在开始之前,我确实了解绿色线程是 Java 线程,其中线程由 JVM 负责,整个 Java 进程仅作为单个 OS 线程运行。因此在多处理器系统上它是无用的。
现在我的问题是。我有两个线程 A 和 B。每个线程都有 10 万行独立代码。我在多处理器系统上的 Java 程序中运行这些线程。每个线程都将被赋予一个本机操作系统线程来运行,它可以在不同的 CPU 上运行,但是由于 Java 被解释,这些线程将需要一次又一次地与 JVM 交互以将字节码转换为机器指令?我对吗 ?如果是,那么对于较小的程序,Java 线程不会是一个很大的优势?
一旦 Hotspot 编译了这两个执行路径,它们都可以和原生线程一样好?我说的对吗?
[编辑]:另一个问题是,假设您有一个 Java 线程,其代码未经过 JIT 编译,您创建该线程并 start() 吗?操作系统线程和 JVM 如何交互来运行该字节码?
谢谢
【问题讨论】:
标签: java multithreading operating-system interpreter