这篇说说如何从JVM的角度来理解线程,可以对Java的线程模型有一个更加深入的理解,对GC的一些细节也会理解地更加深刻。本文基于HotSpot的OpenJDK7实现。
我们知道JVM主要是用C++实现的,JVM定义的Thread的类继承结构如下:
Class hierarchy
- Thread
- NamedThread
- VMThread
- ConcurrentGCThread
- WorkerThread
- GangWorker
- GCTaskThread
- JavaThread
- WatcherThread
另外还有一个重要的类OSThread不在这个继承关系里,它以组合的方式被Thread类所使用
这些类构成了JVM的线程模型,其中最主要的是下面几个类:
java.lang.Thread: 这个是Java语言里的线程类,由这个Java类创建的instance都会 1:1 映射到一个操作系统的osthread
JavaT

本文探讨了从JVM角度理解线程,详细介绍了Java线程与操作系统线程的关系,以及JVM中不同线程类型如JavaThread、VMThread、OSThread的角色。讨论了线程的创建过程、生命周期及不同状态,包括_thread_new、_thread_in_Java等。同时提到了通过JNI附加和脱离JVM的线程操作。最后,概述了JVM内部的VM Threads,如VMThread、GC threads和Compiler threads等。
最低0.47元/天 解锁文章
86万+





