Why is (javax.servlet.)SingleThreadModel 已弃用?

2022-09-01 18:39:12

为什么javax.servlet.SingleThreadModel被弃用?


答案 1

javadoc说明了原因。 它被设计为低负载并发的简单解决方案,但它甚至没有管理它:SingleThreadModel

请注意,单线程模型并不能解决所有线程安全问题。例如,会话属性和静态变量仍然可以同时由多个线程上的多个请求访问,即使使用 SingleThreadModel servlet 也是如此。建议开发人员采用其他方法来解决这些问题,而不是实现此接口,例如避免使用实例变量或同步访问这些资源的代码块。

如果它不能实现它的设计目的,就不应该使用它。


答案 2

这基本上是处理并发性的一种不良方式。改为从 servlet 中删除状态,以便多个线程可以同时使用同一个 servlet。将状态保存在 servlet 实例的“池”中,每个实例都可以具有上一个请求等遗留的状态,这是非常可怕的。