我從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