因为Servlet是线程模式的,要注意同步;数据库操作也要注意同步。

解决方案 »

  1.   

    这样做有点多余了,Servlet本身是基于线程的,如果你的应用服务器
    用的是Weblogin6.0以上的话,你可建立数据库连接沲,在Servlet中通过t3
    服务去取到Connection,然后操作数据库,对于不同的用户Servlet会用
    不同的线程去处理的.
      

  2.   

    你如果用应用服务器(Weblogic、WebSphere等)的数据库连接沲,已经处理了同步啦!
      

  3.   

    还有一种情况就是可能数据库的问题
    比如Oracle的试用版限定了用户数
    所以做好用户在执行完的时候实现垃圾收集
      

  4.   

    正因为servlet是线程模式的,所以才会出现问题。
    线程是什么,线程不是一个存储区域,线程没有自己的存储区域,这些区域是进程拥有的,是你在程序里面指定的。
    具体到servlet,一般情况下,每个servlet只会创建一个实例,假如servlet定义了类变量,这些变量都只有一个拷贝。当大家都访问这个实例的方法的时候--这个大家,就是指不同地方来的请求的线程了--哪个类变量的拷贝就会被折腾来折腾去,很容易颠出一身病。
    SingleThreadModel是一种解决方案,但是这种方案从名字看上去就不是一种好的解决办法。比较好的是把类变量放到doXXX里面去,这样这些变量会在每个线程进入doXXX的时候创建,互相就不会干扰了。
      

  5.   

    谢谢你 alou()
    你说得很有道理
    下次再给分吧......