java web執行緒安全的疑問

finikes發表於2007-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?

有這樣的可能性嗎?

謝謝!!!!

相關文章