发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 CQRS 扩展性 并发编程 事件溯源 分布式 SOA

java web线程安全的疑问

2007-12-24 19:39
赞助商链接

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
2007-12-26 14:45

自己顶!

2007-12-27 09:23

没有线程问题,需要对对象的生命周期有一个深刻掌握。

2008-01-02 13:36

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

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系反馈 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com