java web线程安全的疑问

finikes 07-12-24

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所引用的对象就不一样。因此返回的结果就不一样。