文章目录
一、测试线程开销
1、正常测试
2、不创建线程
3、只创建不启动线程
4、只启动不等待执行完成
二、分析测试结果
1、启动线程分析
2、用户线程与内核线程
3、轻量级进程
4、验证 Java...创建的线程是 内核线程 ;
执行 main 函数时 , 处于 用户态 , 一旦调用了 start() 方法启动了线程 , 此时就进入了 内核态 , 该状态切换消耗巨大 ;
2、用户线程与内核线程
系统的线程分为...)
内核线程 : 内核线程是 由内核管理的线程 , 其内部保存了线程的状态信息 , 上下文信息 , 如果频繁的切换线程 , 需要反复处理状态信息 , 上下文信息 , 会浪费很多资源 ;
线程阻塞时 ,...进程不会阻塞 ;
内核线程效率比用户线程低 , 比进程高 ;
3、轻量级进程
轻量级进程 : 在我们写的程序中 , 虽然使用了内核线程 , 但 没有直接使用 , 而是 通过内核线程的高级接口使用内核线程..., 发现线程数增加了
10000
;
由此可见 , Java 虚拟机创建的线程是内核线程 ;
Java 虚拟机创建线程 , 依赖于系统内核 , 内核空间的内核线程 与 用户空间的 Java 线程