如何理解 JDK 的线程跟操作系统的线程
警告
本文最后更新于 2023-12-12,文中内容可能已过时。
如何理解 JDK 的线程跟操作系统的线程
首先要明白,JAVA 作为一门编程语言,是没有产生线程的能力的。语言只能产生命令,却不能对现实产生实际的作用,它最终还是要依赖于实际媒介。就好比我问你,要不要吹空调。如果你说要,那我会找到遥控器打开空调,却不是自己吹出冷风。所以 JVM 的线程是从操作系统借的。
Java 中有个 Thread 类,可以得到 Thread 对象,通过Thread#start
,可以让 JVM 帮我们向操作系统借“一条线程”,执行我们指定的代码。那么就会涉及到一个问题:怎么指定?会不会好不容易借过来 thread,结果执行的代码不是我们期望的?于是就会衍生出一个绑定关系:任务和线程如何绑定?绑定后 thread 就能执行指定任务
也就是说,Java 的这套 Thread API 本质上就是提供一种绑定关系,让线程和任务得以绑定。通俗点理解,Java 的 Thread 就像张天师手中的天雷符,天雷符不是真正的天雷,但却可以向老天爷(操作系统)借一道天雷。