我对 Java 线程概念有一些疑问。我在下面列出了它们。
- 为什么我们必须手动创建线程?网络服务器不会创建它们吗?
- 对 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/