是否每个线程都创建自己的JVM实例以处理其特定执行?
不。它们在同一个JVM中执行,以便(例如)它们可以共享对象和类属性。
如果不是,那么JVM是否必须有某种方式来调度它接下来要处理的线程
Java中有两种线程实现。本机线程映射到由主机OS实现的线程抽象。操作系统负责本机线程调度和时间分片。
第二种线程是“绿色线程”。这些由JVM本身实现和管理,而JVM实现线程调度。自Java 1.2以来,Sun / Oracle
JVM不支持Java绿色线程实现。(请参阅绿色线程与非绿色线程)
如果是这样,那么由于一次只能运行一个线程,这是否会使Java的多线程性质无用?
现在我们正在谈论绿色线程,这从Java角度来看(仅)具有历史意义。
绿色线程的优点是在非I / O情况下调度和上下文切换更快。(基于在Linux 2.2上使用Java进行的测量;http://citeseerx.ist.psu.edu/viewdoc/summary?doi = 10.1.1.8.9238)
使用纯绿色线程,将N个编程语言线程映射到单个本机线程。如前所述,在此模型中您无法获得真正的并行执行。
在混合线程实现中,将N个编程语言线程映射到M个本机线程(其中N> M)。在此模型中,进程内线程调度程序负责绿色线程到本机线程的调度,并且您将获得真正的并行执行(如果M> 1)。
但是,即使有了纯绿色线程,您仍然可以获得并发性。控制被切换到另一个线程,这些线程在I /
O操作上被线程阻塞,立即获取锁,依此类推。此外,JVM的运行时可以实现定期的线程抢占,以便CPU密集型线程不会将(单个)核心独占为其他线程的排斥对象



