【发布时间】:2017-10-22 16:15:59
【问题描述】:
从我读过的关于多线程的许多文章中我的理解是,当一个线程正在执行时,它将由一个可用的逻辑处理器(或核心)处理。或每个 hyper-v 逻辑处理器 2 个线程。
但是,当我在 Java VisualVM 中看到 Thread 选项卡时,我感到困惑,即有 21 个线程(用户创建的线程)一次标记为“正在运行”。因为我的笔记本电脑中只有 4 个逻辑处理器。
我的处理器是 Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz 2.50GHz,它支持超线程技术,但它仍然一次只能处理 8 个线程。
这是怎么发生的?
如果我有不正确的理解,请告诉我。
【问题讨论】:
-
你误会了。可能有数百个线程,操作系统会安排每个线程的工作在一个内核上运行几纳秒,然后是下一个线程,依此类推。
-
感谢您提供的信息,在这种情况下,我的意思是Java用户创建的线程,它可以被识别为与您上面提到的数百个线程相同吗?
-
是的。任何“Java 用户创建的线程”实际上都是在 Java 进程创建时由操作系统创建和调度的。
标签: java multithreading jvisualvm