java 的线程采用1:1 的模型实现,rust 也是采用1:1的模型 而go是采用M:N的方式 。1:1的线程模型可获得最小的运行时,但是线程创建昂贵,占用资源也更大,由操作系统进行调度,M:N线程轻量,但是用户态线程的调度需要语言自己实现。(线程模型: https://www.tutorialspoint.com/operating_system/os_multi_threading.htm)
下面是java 线程中的状态转换
原文:https://www.cnblogs.com/cargo/p/13507204.html