与平台线程一样,虚拟线程也是java.lang.Thread的一个实例。但是,虚拟线程并不依赖于特定的操作系统线程。虚拟线程仍然在操作系统线程上运行代码。但是,当虚拟线程中运行的代码调用阻塞 I/O 操作时,Java 运行时会挂起虚拟线程,直到可以恢复为止。与挂起的虚拟线程关联的操作系统线程现在可以自由地为其他虚拟线程执行操作。
虚拟线程是基于平台线程的,一个线程中有多个虚拟线程,一个线程中可以有两个虚拟线程同时执行一个任务吗?
一个线程中的两个虚拟线程同时执行一个任务
是的。
虚拟线程(VT)依赖于“载体”线程来前进。载体只是平台线程;载体这个词应该提醒您,它们位于虚拟线程下,但不一定与它们有任何亲和力。
载体线程的数量是有限的,从每个CPU核心1个开始,并且可以在特殊的“固定”情况下分配一些额外的线程。
载体确实并行运行,因此一些可运行的 VT 将并行进行,但不是全部。