Java 为什么Vert.x被称为响应型,即使它是单线程的
我从Vert.x文档(以及其中的一些代码)中了解到,Vert.x是单线程的,在事件池中执行事件。它不等待I/O或任何网络操作,而是给另一个事件时间(这在任何Java多线程框架中都没有) 但我无法理解以下内容:Java 为什么Vert.x被称为响应型,即使它是单线程的,java,multithreading,asynchronous,vert.x,Java,Multithreading,Asynchronous,Vert.x,我从Vert.x文档(以及其中的一些代码)中了解到,Vert.x是单线程的,在事件池中执行事件。它不等待I/O或任何网络操作,而是给另一个事件时间(这在任何Java多线程框架中都没有) 但我无法理解以下内容: 单线程如何优于多线程?如果有数百万个传入的HTTP请求呢?它不会比其他多线程框架慢吗 垂直板取决于CPU核。你有多少个CPU核,你就可以有多少个垂直板并行运行。为什么在虚拟机上工作的语言可以根据需要使用CPU?据我所知,JavaVM(JVM)是一个只使用另一个OS进程的应用程序(这里我对O
多核CPU一次可以执行多个线程。我不知道“it”中的“it”是什么,因为“it”指的是什么。首先,Vertx无论如何都不是单线程的。它只是不能产生所需的更多线程 其次,这与Vertx完全无关,JVM将线程映射到本机OS线程 第三,我们可以在多线程环境中实现非阻塞行为。不是每个CPU一个线程,而是每个核心一个线程。
但问题是:“这些线程在做什么?”。因为通常情况下,他们需要其他资源才能发挥作用。网络、数据库、文件系统、内存。这就变得很棘手了。当您是单线程时,您没有竞争条件。在任何时候访问内存的只有你自己。但是,如果您是多线程的,您需要关注互斥体,或者任何其他保持数据一致性的方法 首先,Vertx无论如何都不是单线程的。它只是不能产生所需的更多线程 其次,这与Vertx完全无关,JVM将线程映射到本机OS线程 第三,我们可以在多线程环境中实现非阻塞行为。不是每个CPU一个线程,而是每个核心一个线程。
但是