比如jsp用的是tomcat的服务器。
其中有个bean叫Person吧,然后有个操作他的类PersonManager
在PersonManger中有些方法,如:
public static boolean addPerson(....){}
我不明白的就是,有两个jsp添加新的Person时,就调用PersonManager.AddPerson
这个时间会不会有冲突?在服务器中,应该是tomcat为他们建立一个线程吧 ?然后这两个jsp是不是在自己的线程都各有一个相当于自己的addPserson方法?不知道我说明白没 ?

解决方案 »

  1.   

    换句话说
    当有两个应用一个static方法时,这个static是怎么应用的啊?
      

  2.   

    不同的应用使用不同的类加载器,因此静态变量、静态方法不会相互干扰。但是同一个类加载其中静态变量会相互影响。不使用静态变量的静态方法则不会相互干扰。关于tomcat类加载器,参见:
    http://www.qqread.com/java/2007/04/g308049.html
      

  3.   

    jsp都是编译成servlet进行执行的,servlet本身都是多线程的
      

  4.   

    会有冲突,两个jsp中使用的是同一个addPserson(),与有多少个线程没有关系。我觉得把addPserson()作为静态方法不是一个很好的设计,楼主有必要重构一下你的架构:_)
      

  5.   

    静态方法是不会冲突的,方法本身和线程无关。关键是方法内部访问的变量。
    如果各个线程访问相同的变量,那么这个变量应该用synchronized保护起来;如果应该为各个线程建立不同的变量,那么这个变量应该放入ThreadLocal的实例中。