美文网首页
线程的创建

线程的创建

作者: simonl | 来源:发表于2017-03-28 15:34 被阅读0次

下面让我们来大概的分析下一个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

相关文章

  • Java 多线程之线程的创建及其使用

    一、创建线程以及启动线程 二、停止线程 三、线程类中函数详解 一、创建线程以及启动线程 创建线程:Java中创建线...

  • 多线程

    创建一个多线程 创建多线程-继承线程类 创建多线程-实现Runnable接口 创建多线程-匿名类code

  • iOS 多线程-NSThread

    1. 创建和启动线程 创建、启动线程 2. 其他创建线程方式 创建线程后自动启动线程[NSThread detac...

  • 3.多线程基础(三)NSThead使用

    1.NSThread创建新线程: 创建线程之后是默认不执行的状态 创建线程设置线程的属性 2.NSThread创建...

  • Day19——threading

    一、导入线程库 二、创建子线程 函数创建线程 Thread(target,args) - 创建子线程对象说明...

  • 创建线程的几种方法

    直接创建 创建线程后自动启动 创建后台线程

  • 多线程编程之NSThread

    NSThread创建线程很简单,管理线程很困难 一、创建线程 1、创建线程对象,调用start方法执行线程 NST...

  • 多线程--精通ThreadPoolExecutor

    前言 在多线程开发中,应该避免显式创建线程,而是采用线程池里面的线程。使用线程池可以减少手动创建线程,减少线程创建...

  • 二. NSThread基本使用

    一. 线程的创建 创建线程并且手动开启, 同时在这条线程执行selector的任务 // 1. 创建线程对象 NS...

  • Java 必备面试代码

    1. Thread 创建线程 2. Runnable 创建线程 使用线程池创建多线程Callable 4. 基于线...

网友评论

      本文标题:线程的创建

      本文链接:https://www.haomeiwen.com/subject/tufjottx.html