java - 如果 Web 服务器已经创建了线程,为什么还要手动创建线程?

标签 java multithreading

我对 Java 线程概念有一些疑问。我在下面列出了它们。

  1. 为什么我们必须手动创建线程?网络服务器不会创建它们吗?
  2. 对 Web 服务器的每个请求都是一个线程吗?如果是这样,它如何处理在同一代码上运行它们而不与其他线程冲突?

最佳答案

Why do we have to create threads manually? Doesn't the web server create them?

如果您使用的是 Web 服务器,并且该服务器为您处理线程,则您不需要。例如,如果您使用 servlet,则不会创建线程;而是创建线程。你把它留给 servlet 层。在很多情况下,您不会在类似的东西后面运行(也许您正在编写自己的 Web 服务器或其他类型的服务器;或者想要利用计算机中所有 CPU 核心的应用程序),在这种情况下,您可能需要处理自己的线程创建。

Is each request to the web server a thread? If so, how does it handle running them on the same code without colliding with other threads?

这取决于您使用的网络服务器。一种典型方法是拥有一个线程池并将请求分配给这些线程。该请求使用该线程直到请求完成,可能与其他线程上的其他请求一起运行,并且当请求得到满足时,该线程返回到池中以供重用。但这只是编写 Web 服务器的一种方式。

关于java - 如果 Web 服务器已经创建了线程,为什么还要手动创建线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22248327/

相关文章:

java - 使用 GenerationType.SEQUENCE 生成负 Id 值

java - 从命令行读取文件名并在主方法之外使用它

java - 客户端和服务器端应用程序之间的通信

C#:使任务同时运行

java - 如何在本地同步两张 map ?

java - 如何为无法删除的JTextField设置初始值

C# 正则表达式拆分为 Java 模式拆分

multithreading - 线程内存布局

java - RestEasy 异步 Controller 正确使用

java - 如何从 JMS 读取和收集响应消息并使它们可供正确的 servlet 线程使用?