Java线程和操作系统线程的关系 |
您所在的位置:网站首页 › 操作系统进程之间的关系 › Java线程和操作系统线程的关系 |
之前被问起 Java线程 和 操作系统线程 有什么关系. 一时不知道如何回答. 一直想弄明白,故从OpenJDK源码中找寻一下答案 , 如何编译源码和搭建环境,且看 Ubuntu18.04编译调试OpenJDK15 什么是进程, 什么是线程?[1]进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。线程(Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在 Java1.2 之后. Linux中的JVM是基于pthread实现的,即 现在的Java中线程的本质,其实就是操作系统中的线程 从源码里解答先写一个测试代码Test.java public class Test { public static void main(String[] args) throws InterruptedException { System.out.println(" -- new thread--"); Thread thread = new Thread(() -> { System.out.println("hello thread"); }, "Thread Name "); System.out.println(" -- start -- "); thread.start(); thread.join(); System.out.println("end"); } }然后修改launch.json 里 Java启动的 args为Test.java的路径 ( 从JDK11起可以简化启动单个源代码文件的方法, 即 java Test.java = javac Test.java + java Test ) Java的Thread.start()中调用的了一个native方法即 private native void start0(); 我们在OpenJDK源码中找到这个方法. 即 src/java.base/share/native/libjava/Thread.c {"start0", "()V", (void *)&JVM_StartThread},跟进去JVM_StartThread 即来到了 src/hotspot/share/prims/jvm.cpp |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |