这篇说说如何从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
JavaThread: JVM中C++定义的类,一个JavaThread的