有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (2) 个答案

  1. # 1 楼答案

    都不是

    理想情况下,对于基于NIO的服务器,您可以使用Executors.newFixedThreadPool()之类的东西创建线程池,用于执行处理请求的所有处理

    但是,不应该将请求分配给特定的线程,因为系统的其余部分也应该是异步的。这意味着,当请求处理程序需要执行一些冗长的I/O工作或类似的工作时,它不会阻塞线程并等待它完成,而是异步启动它,并通过向线程池提交新任务来安排处理在工作完成后继续。无法确定哪个线程将在该点接收工作,因此请求的处理可能最终会分散到多个线程

    通常应该使用CompletableFuture协调异步处理,就像节点中使用Promise一样。看看我在这里的答案,它试图解释如何做到这一点:decoupled design for async http request

  2. # 2 楼答案

    如果您的请求处理是100%异步的,也就是说您在请求处理期间从不等待任何东西,那么在同一个线程中执行所有操作可能会稍微好一点

    如果您有一个多核系统,或者在请求处理期间等待I/O,那么您应该使用线程池