JAVA线程创建底层流程

    xiaoxiao2026-06-15  10

    下面让我们来大概的分析下一个Java线程启动后,底层的调用细节。

    环境:JDK:1.8

               glibc:2-25

               linux-kernel:2.6.0

    1.0-大致的执行流程

    一JAVA 层面:

    当我们创建一个线程并执行start()方法后这个线程才会被创建和执行。java.lang.Thread.start()方法会调用本地方法start0();

    二 JVM 层面:

    接下来start0()方法会调用JVM_StartThread()方法:

    这是JVM_StartThread的具体实现,可以看到,它会创建一个JavaThread实例。

    我们来看看JavaThread的构造方法里边发生了什么:

    os::create_thread的具体实现。在这个方法中会创建一个平台相关的OSThread 实例。

    在os::create_thread()方法中会利用glibc库中的pthread.h中的pthread_create方法创建一个轻量级的Linux进程,这个方法执行后,线程创建控制流从JVM转到OS.

    三 OS层:

    pthread.h 中定义pthread_create()方法。

    pthread_create()方法的具体实现。

    pthread_create 方法进入clone方法的桥梁create_thread()方法。

    create_thread方法的具体实现:

    系统调用:

    系统调用的处理程序:sys_clone

    do_fork()函数的具体实现:

    参考资料:①https://yq.aliyun.com/articles/67090?                                                       spm=5176.8091938.0.0.G8W8Xw

                      ②http://blog.csdn.net/u011955950/article/details/45601985

                      ③http://hllvm.group.iteye.com/group/topic/43599

    最新回复(0)