gpt4 book ai didi

multithreading - Java线程如何在内核空间中调度?

转载 作者:行者123 更新时间:2023-12-02 06:18:36 24 4
gpt4 key购买 nike

这是我对 Java 线程调度的理解,当 java 调用运行在现代实现上的 java.lang.Thread 类的 start() api 时,Java 线程会被调度。操作系统(如Solaris 9)。

enter image description here使用术语LWP是因为术语内核线程通常在内核编程中用于启动线程。

因此,使用 java.lang.Thread::start() API 创建的每个 java 线程 都与 native 线程 具有 1:1 映射分别在 POSIX、Solaris、Windows 平台上使用 pthread_create()thr_create()CreateThread() 创建。反过来,每个 native 线程 与 LWP 具有 1:1 映射。

我的问题:

1)

我是否可以说,用户空间jvm中已经没有Java线程调度策略来基于上图中的1-1线程模型来调度java线程了?

2)补充:在双核处理器场景中,这 2 个 LWP(代表每个 JVM 进程)是否有相同的机会同时(并行)执行?

注意:作为一个 java 初学者,我需要这种清晰度

最佳答案

该图详细介绍了 jvm 的内部工作原理,以及它如何从较低级别的操作系统线程抽象为 java 线程模型。这就是 JVM 在上述操作系统上的运行方式。

直接回答您的问题:

  1. ) 每次创建线程时,都会创建一个供操作系统管理的线程。 JVM 在您和操作系统之间有一个抽象层,以便您可以在不同的系统上使用相同的线程模型。一般来说,对于未优化的java代码,java线程就是操作系统线程。

  2. )您无法保证并行执行。根据 CPU 负载,操作系统可能需要其他更高优先级系统的资源。编写多线程应用程序时,要像线程外发生的事情都是未知的一样来编写。

如果你想了解更多java多线程模型,推荐这个book 。这本书很老了,但仍然具有现实意义。它是Java语言架构师编写的,详细介绍了Java多线程模型

关于multithreading - Java线程如何在内核空间中调度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27308483/

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