每个Tomcat服务器都在自己的JVM上运行,每个JVM都是操作系统中的一个独立进程。现在我在Tomcat中部署了多个应用程序,它拥有自己的上下文和自己的类加载器。如果我在每个应用程序中运行多个Thread,那么操作系统如何处理此Thread切换以及整个JVM作为进程如何与其他进程切换。这些JVM进程和Java线程如何在上下文切换方面相关。它在大多数最新的操作系统中如何工作。
答案 0 :(得分:1)
在Linux中,线程的实现方式与进程大致相同。因此调度程序并不关心进程,而是在线程之间切换。阅读here更多低级别说明。
现在JVM是一个通常有很多线程的进程。它们中的每一个都是一对一地映射到某个linux进程。在这种情况下,调度程序将分配时间段(特定线程的运行时间),无论哪个进程(在您的情况下为JVM)拥有此线程。这意味着如果一个JVM的总线程数比其他JVM多十倍,那么第一个JVM的CPU比另一个JVM的耗时更多。
您可以通过多种方式影响此行为。