编写servlet与jsp的时候,线程安全问题很容易被忽略,如果忽视了这个问题,你的程序就存在潜在的隐患。
servlet的生命周期是由web容器负责的,当客户端第一次请求servlet时,容器负责初始化servlet,也就是实例化这个servlet类。以后这个实例就负责客户端的请求,一般不会再实例化其他servlet类,也就是有多个线程在使用这个实例。servlet之所以比cgi效率高就是因为servlet是多线程的。如果该servlet被声明为单线程模型的话,容器就会维护一个实例池,那么将存在多个实例。 【相关文章:AJAX:如何处理书签和后退按钮(1)】
1.servlet的生命周期 【扩展阅读:利用微软Atlas消费外部Web服务(1】
servlet规范已经声明servlet不是线程安全的,所以在开发servlet的时候要注要这个问题。这里以一个现实的模型来说明问题,先定义一个servlet类,再定义一个smulatemultithread类与webcontainer类。 【扩展信息:实现AJAX风格的Portal】
2.servlet的线程安全
import javax.servlet.http.httpservlet;
import javax.servlet.servletexception; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import java.io.ioexception;//该类模拟多线程servlet的情况
public class smulatemultithread implements runnable{
public smulatemultithread() { }public static void main(string[] args) {
//处理100个请求
for(int i=0;i<100;i++)
{ ... 下一页