java web线程安全的疑问

07-12-24 finikes
java web线程安全的疑问

假设servlet中需要访问某一个类中的静态方法,比如:

public interface Bean {}

public class AviBean implements Bean {}

public class BookBean implements Bean {}

public class BeanFactory {

private BeanFactory(){}

public static Bean getBean(String name){

return (Bean)Class.forName(name).newInstance;

}

}

该BeanFactory类的静态方法getBean(String name)中有个"局部变量":name

如果该方法非static 那这个name肯定是线程安全的

但是现在该name处于一个static方法内.

那servlet调用这个方法时还是线程安全的吗?

是不是这个name在堆栈中只有一个区域?

这样当name从方法开始被赋值到name被调用会不会因为servlet多线程的问题而发生了不该发生的变化?

打个比方说:会不会

A和B同时通过servlet调用BeanFactory.getBean(String name)

A:BeanFactory.getBean("org.finikes.entity.AviBean");

B:BeanFactory.getBean("org.finikes.entity.BookBean");

而A得到的是BookBean,B得到的是AviBean?

有这样的可能性吗?

谢谢!!!!

1
finikes
2007-12-26 14:45
自己顶!

banq
2007-12-27 09:23
没有线程问题,需要对对象的生命周期有一个深刻掌握。

shijiezhichuang
2008-01-02 13:36
不会。

name是一个对象的句柄,每次调用的时传过来的对象不一样,name所引用的对象就不一样。因此返回的结果就不一样。

猜你喜欢