本篇文章探究下Java线程与内核线程的关系.
在Java中,一个Java的线程对应一个内核的线程,实际的业务代码是由内核线程来执行的,而Java线程只是一个傀儡....我们是使用strace -ff -o out java Example命令运行的程序,因此它会打印系统调用相关的信息.
707内核线程打印了Thread-A, 也就是说,内核线程707对应Java的...调用os::create_thread(this, thr_type, stack_sz)继续创建线程逻辑.
底层调用C库的pthread_create创建内核线程....父线程唤醒之前阻塞的子线程
子线程被唤醒之后,执行JVM中线程的run方法
最后子线程会调用执行Java线程的run方法....同时当Java线程的run方法执行完成之后, 线程就调用exit退出了. 这里也就解释了Java线程退出之后,内核线程也会退出的原因了.