概述
了解Java线程模型在对理解基于Java对象的悲观锁和基于AQS的乐观所都是有帮助的。
什么是Java线程模型
因为Java字节码运行在JVM中,而JVM运行在各个操作系统上,所以当JVM想要进行线程创建和回收的这种操作时,是必须要调用操作系统的相关接口,也就是说JVM线程与操作系统线程之间存在着某种映射关系。
这两种不同维度的线程之间的规范和协议呢,就是线程模型。有人可能要问了那为什么需要这种线程模型?我们在开发时如果直接调用操作系统的接口来创建和回收线程不是更加直接吗,这个问题的答案呢其实很容易理解就像我们现在为什么不常用汇编语言来进行开发而是使用更加简单更加容易上手的高级语言一样,这是一种自下而上的抽象方式。JVM线程对不同操作系统的原生线程进行了高级抽象,可以使开发者一般情况下可以不用关注下层的细节,而只要专注上层的开发就行了。
但是对于我们个人来说还是需要秉持知其然并知其所以然的态度,就要去理解这种抽象方式,这也有助于我们在将来自己进行一些设计的时候,能够调用前人的思想。
线程模型种类
线程模型主要有三类分别如下:
1. 一对一
2. 多对一
3. 多对多