锁定老帖子 主题:SPRING的AOP不适合多线程应用?
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-10-12
最后修改:2009-02-22
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-10-12
每次都new不一定就是性能下降,你看struts2
|
|
返回顶楼 | |
发表时间:2008-10-13
tristan.cw 写道 每次都new不一定就是性能下降,你看struts2
不知道你说的依据是什么. 这其中的性能不会下降是凭感觉得来的吧. |
|
返回顶楼 | |
发表时间:2008-10-13
第一:线程安全与否取决于是否存在线程同时修改某一东西(和aop没有关系)。
第二:代理对象的创建开销大概是3倍于普通对象(第一个比较长) 第三:ioc是架构上的选择,如果希望代码是可测试的,那么应该选它。 |
|
返回顶楼 | |
发表时间:2008-10-13
单例的话,可能肯定是线程不安全的吧!
|
|
返回顶楼 | |
发表时间:2008-10-13
不能简单的认为单例就是线程不安全的,所有的无状态bean都是线程安全的
|
|
返回顶楼 | |
发表时间:2008-10-14
nihongye 写道 第一:线程安全与否取决于是否存在线程同时修改某一东西(和aop没有关系)。
第二:代理对象的创建开销大概是3倍于普通对象(第一个比较长) 第三:ioc是架构上的选择,如果希望代码是可测试的,那么应该选它。 1.我说的就是AOP的实现对象不是线程安全的.所以AOP单例本身就不是安全的,其中的接口数组,拦截器,被代理对像的引用等等,当多线程并发时会有意想不到的错误. 2.绝对不是三倍,远远大于三倍。机器便宜,但不能因为机器便宜就可以滥用资源。 3.是否可测试与IOC没有关系.不用IOC也可以很方便的测试。 总的意思是,做项目选择合适的,SPRNG就像狗皮膏药一样到处贴,哪里都能用,到哪都能看到项目里面使用了SPRING,这样往往事倍功半.这样讲又回到了老问题,又有人会说到底应该学什么框架啊,其实我也说不好,各有所长,事事无绝对。 |
|
返回顶楼 | |
发表时间:2008-10-14
引用 1.我说的就是AOP的实现对象不是线程安全的.所以AOP单例本身就不是安全的,其中的接口数组,拦截器,被代理对像的引用等等,当多线程并发时会有意想不到的错误.
你是说被代理对象还是aop框架本身的问题? 引用 2.绝对不是三倍,远远大于三倍。机器便宜,但不能因为机器便宜就可以滥用资源。
收回我的结论,我的测试做了new Date() 引用 3.是否可测试与IOC没有关系.不用IOC也可以很方便的测试。
IOC只是一种思想,而spring是帮助实现这种思想的工具,如果对象足够复杂,有好工具总比没有好。 |
|
返回顶楼 | |
发表时间:2008-10-14
MarkDong 写道 不能简单的认为单例就是线程不安全的,所有的无状态bean都是线程安全的
也不能认为无状态的bean就是线程安全的,如果方法里在读取和更改其他类里的公共变量就会有线程问题! |
|
返回顶楼 | |
发表时间:2008-10-14
nihongye 写道 引用 1.我说的就是AOP的实现对象不是线程安全的.所以AOP单例本身就不是安全的,其中的接口数组,拦截器,被代理对像的引用等等,当多线程并发时会有意想不到的错误.
你是说被代理对象还是aop框架本身的问题? 这个是讨论的重点. 不是被代理对像,也不考虑程序员造成的安全问题.AOP框架本身不是线程序安全的. 性能问题,我估计你用的不是普通对相,如果是普通对像会应该差距这么小,普通对像应该是ArrayList的那种,String,无状态简单BEAN。这样的话性能相差至少是50倍吧。一会测下就行了。 仅仅创建的性能差距还不是全部,还有运行时执行aop框架对象的消耗时间,这个时间都要累加到CPU上面,所以各种因素加在一起影响就大了。 |
|
返回顶楼 | |