当前位置: 备案域名出售 > 建站教程>正文

缺省线程模型

缺省模型中,只载入servlet(或JSP)的单一实例。Servlet引擎维护线程池,当请求到达时将其设置到请求。每个线程运行适当的服务方法,典型为donget()或dopost()。在高峰活动期,许多请求可能通过同一个servlet方法在同时运行,但因为每个线程都有其自己的指令指针和本地变量栈,请求间不会发生冲突。缺省模型提供好的吞吐率,但存在一些限制。因为只有一个servlet实例,任意实例变量只存在一个副本。如果考虑不谨慎,代码允许写入变量,一个线程覆盖了另一个线程所需的值。写入和读取就可能发生重叠。还有,如果donget()或dopost()方法调用子过程,它必须将所有必要对象作为参数传递,因为从其被写入知道子过程读取它们为止,不能依赖实例变量保留其值。

缺省模型的替代品是单线程模型。在此环境下,servlet引擎确保一次只有一个请求运行servlet实例的服务方法。为使用次模型,servlet必须实现SingleThreadModel接口。此接口中没有方法,它只是将servlet标记为需要此线程处理。在JSP页面中,利用page伪指令选择此模型。单线程模型的优点很少,如果给定计划和明智的同步策略,通常缺省模型是更好的选择。

« 上一篇下一篇 »