本篇文章探究下Java线程与内核线程的关系.
在Java中,一个Java的线程对应一个内核的线程,实际的业务代码是由内核线程来执行的,而Java线程只是一个傀儡....在Java中调用start方法启动线程, 底层映射到JVM中的JVM_StartThread方法.
接下来继续调用创建逻辑....调用os::create_thread(this, thr_type, stack_sz)继续创建线程逻辑.
底层调用C库的pthread_create创建内核线程....创建完成之后, 子线程执行java_start方法,而父线程暂时阻塞住.
子线程唤醒父线程,然后子线程阻塞住.
父线程被唤醒之后,执行start方法....这里附一张全貌图
总结一下就是父线程创建了子线程, 子线程执行完成之后,子线程就自动退出了.