在JEP425 中,关于虚拟线程的介绍中,多次提到,不要将虚拟线程池化。也就是说,不要把虚拟线程和线程池合着用。
主要原因是:像所有资源池一样,线程池旨在共享昂贵的资源,但虚拟线程并不昂贵,因此永远不需要将它们池化。
虚拟线程被设计为可以轻松地创建和销毁的轻量级实体,旨在允许每个任务都在其自己的虚拟线程中运行。这与传统的平台线程不同,后者创建和销毁的成本较高,因此经常被放入线程池中重用以提高效率。
虚拟线程的设计使得它们在遇到阻塞操作(如I/O操作)时可以被挂起,释放底层操作系统线程给其他任务使用。这种模型在高并发场景下能有效利用系统资源,减少了因阻塞操作而浪费的CPU周期。如果虚拟线程被放入池中重用,这种灵活的资源调度优势就会被削弱。
还有就是,虚拟线程的引入有个目的是为了简化并发编程模型,让开发者可以像编写顺序代码一样编写并发代码,而无需担心线程管理和线程池的复杂性。要求虚拟线程不被池化,是为了鼓励开发者利用这一简化的模型,避免回到传统的线程池管理模式。
总之,我们可以随意利用虚拟线程的轻量级特性和系统资源的高效利用,简化并发编程模型,而无需依赖传统的线程池技术。