Tomcat threads vs Java threads

2022-09-02 00:06:52

使用java线程时,必须通过同步等处理并发性带来的基本问题。

AFAIK Tomcat还与线程一起使用来处理其工作负载。为什么在Tomcat中运行时,我不必考虑使代码线程安全?


答案 1

你必须在tomcat中确保你的代码线程是安全的。Tomcat 将从多个线程调用您的代码(即您的 servlet),如果该代码不是线程安全的,您将遇到问题。

Tomcat的线程与您自己创建的任何线程没有什么不同。


答案 2

为了补充skaffman所提到的内容,在编写Webapp时,似乎您不需要考虑多线程,因为Servlet框架/ API完全围绕实现方法(,,,等)进行,这些方法在每个HTTP请求中调用一次。service()doGet()doPost()

因此,在一个简单的应用程序中,您可以在 servlet 和/或 JSP 或其他任何方法中实现这些方法,而不必考虑当多个线程交互时会发生什么。

但是,当你开始在 servlet 或服务方法之间共享状态的那一刻,在没有意识到的情况下,你正在处理多个线程的交互,如果你不小心,你最终会遇到多线程或同步问题。你将不得不处理这个问题,因为在Tomcat中(我假设所有的servlet容器,尽管我不知道Servlet规范是否需要它),每个请求(可能)由不同的线程处理。因此,如果您同时收到两个请求,这些请求将由两个单独的线程同时(同时)处理。