我从Vert.x文档(及其中的一点编码)中了解到Vert.x是单线程并执行中的事件活动池。它不等待I/O或任何网络操作,而不是等待另一个事件(这在以前的任何Java多线程框架中都没有)。为什么Vert.x调用响应,即使它是单线程的
但我不明白以下几点:
- 如何单线程是优于多线程?如果有数以百万计的传入HTTP请求会怎么样?它不会比其他多线程框架慢吗?
- Verticles依赖于CPU核心。尽可能多的CPU核心,可以有许多垂直并行运行的垂直。在虚拟机上运行的语言如何根据需要使用CPU?据我所知,Java VM(JVM)是一个只使用另一个OS进程的应用程序(这里我的理解不太关于操作系统和JVM,因此我的问题可能太天真了)。
- 如果单线程非阻塞概念如此有效,那么为什么我们不能在多线程环境中使用相同的非阻塞概念?它会不会更快?或者再一次,是因为CPU一次可以执行一个线程?
你为什么认为Vertx是单线程? –
你的第二点直接抵触你声称vert.x是单线程的 – UnholySheep
#3也是不正确的。没有什么能阻止你在多线程环境中使用非阻塞I/O。 – EJP