论坛首页 入门技术论坛

SPRING的AOP不适合多线程应用?

浏览 14624 次
该帖已经被评为新手帖
作者 正文
   发表时间:2008-10-12   最后修改:2009-02-22
yyyhbfl
   发表时间:2008-10-12  
每次都new不一定就是性能下降,你看struts2
0 请登录后投票
   发表时间:2008-10-13  
tristan.cw 写道
每次都new不一定就是性能下降,你看struts2


不知道你说的依据是什么.
这其中的性能不会下降是凭感觉得来的吧.

0 请登录后投票
   发表时间:2008-10-13  
第一:线程安全与否取决于是否存在线程同时修改某一东西(和aop没有关系)。
第二:代理对象的创建开销大概是3倍于普通对象(第一个比较长)
第三:ioc是架构上的选择,如果希望代码是可测试的,那么应该选它。
8 请登录后投票
   发表时间:2008-10-13  
单例的话,可能肯定是线程不安全的吧!
0 请登录后投票
   发表时间:2008-10-13  
不能简单的认为单例就是线程不安全的,所有的无状态bean都是线程安全的
0 请登录后投票
   发表时间:2008-10-14  
nihongye 写道
第一:线程安全与否取决于是否存在线程同时修改某一东西(和aop没有关系)。
第二:代理对象的创建开销大概是3倍于普通对象(第一个比较长)
第三:ioc是架构上的选择,如果希望代码是可测试的,那么应该选它。


1.我说的就是AOP的实现对象不是线程安全的.所以AOP单例本身就不是安全的,其中的接口数组,拦截器,被代理对像的引用等等,当多线程并发时会有意想不到的错误.
2.绝对不是三倍,远远大于三倍。机器便宜,但不能因为机器便宜就可以滥用资源。
3.是否可测试与IOC没有关系.不用IOC也可以很方便的测试。

总的意思是,做项目选择合适的,SPRNG就像狗皮膏药一样到处贴,哪里都能用,到哪都能看到项目里面使用了SPRING,这样往往事倍功半.这样讲又回到了老问题,又有人会说到底应该学什么框架啊,其实我也说不好,各有所长,事事无绝对。

0 请登录后投票
   发表时间:2008-10-14  
引用
1.我说的就是AOP的实现对象不是线程安全的.所以AOP单例本身就不是安全的,其中的接口数组,拦截器,被代理对像的引用等等,当多线程并发时会有意想不到的错误.

你是说被代理对象还是aop框架本身的问题?

引用
2.绝对不是三倍,远远大于三倍。机器便宜,但不能因为机器便宜就可以滥用资源。

收回我的结论,我的测试做了new Date()

引用
3.是否可测试与IOC没有关系.不用IOC也可以很方便的测试。

IOC只是一种思想,而spring是帮助实现这种思想的工具,如果对象足够复杂,有好工具总比没有好。




0 请登录后投票
   发表时间:2008-10-14  
MarkDong 写道
不能简单的认为单例就是线程不安全的,所有的无状态bean都是线程安全的

也不能认为无状态的bean就是线程安全的,如果方法里在读取和更改其他类里的公共变量就会有线程问题!
0 请登录后投票
   发表时间:2008-10-14  
nihongye 写道
引用
1.我说的就是AOP的实现对象不是线程安全的.所以AOP单例本身就不是安全的,其中的接口数组,拦截器,被代理对像的引用等等,当多线程并发时会有意想不到的错误.

你是说被代理对象还是aop框架本身的问题?

这个是讨论的重点.
不是被代理对像,也不考虑程序员造成的安全问题.AOP框架本身不是线程序安全的.


性能问题,我估计你用的不是普通对相,如果是普通对像会应该差距这么小,普通对像应该是ArrayList的那种,String,无状态简单BEAN。这样的话性能相差至少是50倍吧。一会测下就行了。
仅仅创建的性能差距还不是全部,还有运行时执行aop框架对象的消耗时间,这个时间都要累加到CPU上面,所以各种因素加在一起影响就大了。

0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics