各位高手帮帮忙吧!servlet多线程问题,详细内容请进!!!

07-12-09 htao
现在有个项目,我明白servlet是多线程的,当servlet中使用一个业务对象时,此业务对象拥有自己的属性,这样并发调用时,此业务对象是不是线程不安全的啊?也就是说,此业务对象的属性会出现错误啊???

由于这个业务对象是servlet的一个通过spring注入的属性,所以这个业务对象中的公用变量(业务对象的属性),是不是会因为并发线程而出现错误啊?急!!

[该贴被htao于2007-12-09 13:38修改过]

banq
2007-12-10 10:16
>当servlet中使用一个业务对象时,此业务对象拥有自己的属性

取决于你怎么样使用,servlet其实就类似一个线程类,如果你在servlet类字段声明这个业务对象,就是高危行为了,否则在方法中则没有事情。

无论使用什么高级的IOC如Spring等等,都基本遵循这个底层机制。

htao
2007-12-10 14:34
那坏了,就是做为一个公用属性了,昨天问我们开发部经理,他还说只要不将spring的配置设置为singlton就没问题呢.

那我如何处理啊,用threadLocal处理好吗

也就是说用户的一个请求属于一个线程,而在服务器端却对应一个servlet实例了?原以为一个请求会创建一个servlet实例呢?请各位证实

为什么放在方法里就没事啊?

[该贴被htao于2007-12-10 14:40修改过]

shijiezhichuang
2008-01-02 13:40
要看情况而定。

如果在spring容器的bean不是单例的话,每次调用业务对象时,都会sping容器都会产生一个新的bean来注入调用者,不会发生线程问题。如果是单例的话,要看是否同步。

猜你喜欢