如果多个用户同时访问web服务器,它是如何做的呢?
用一个线程接受所有请求,还是为每个用户建立一个线程?
tomcat和weblogic一样吗?如果有多个用户同时访问web服务器的某个功能,
比如修改数据方法  modify(...),这个方法内部包括很多条插入和修改操作。
所以modify中使用了事务机制,以保证ACID特性。
那么需要为这个modify方法加上同步关键字synchronized以保证这个方法,的串行执行?
还是ACID中的隔离性就可以保证数据的正常了?因为我现在的业务逻辑中都没有加同步,仅仅用了spring的声明式事务机制管理起来,有的还没有用spring管理,
所以有些疑问,请大侠们解答。

解决方案 »

  1.   

    这个有待研究tomcat源码。。暂时没到那个境界
    还在看struts对请求的处理。。
      

  2.   

    1.多用户访问web服务器,web服务器会为每个用户建立一个线程,也就是web服务器会为每个用户建立一个会话(session),每个用户的会话独立。tomcat和weblogic在这点是相同的。
    2.对于事物的控制,如果多个线程没有对内存的同一个变量进行修改,就不需要加synchronized关键字。
    3.对于数据库事物的ACID,如果一个线程对某个数据库表进行DML操作,那么数据库提供的机制就会对这张表枷锁,其他线程是不能修改这张表的,知道表的锁被第一个访问的现场释放,也就是第一个线程退出!综上如果modify方法只是对数据库的多个操作,在多个线程之间是不用考虑同步的,也就是不用加synchronized关键字,但是你必须保证一个线程内部的事务完整性,就是必须保证线程内部的事务的ACID特性!
      

  3.   


    感谢WANGYQ_412的回答,使我受益匪浅