Struts 2 Action访问静态方法时的线程安全性
问题描述:
我知道Struts 2 Actions是线程安全的。但是如果这些Action类包含对实用静态方法的方法调用会发生什么?线程安全性会受到影响吗?Struts 2 Action访问静态方法时的线程安全性
拿一个实用的方法来解析一个上传的excel文件等等。如果该方法被声明为静态的,它应该是同步的吗?
更新:
我只是读取文件,并将该文件提交到行动,以便它本身应该是线程安全的。但由于分析是一种实用工具方法来完成我我怀疑同步是否有必要。但显然如果你只访问方法范围变量,它应该是线程安全的。但像File这样的参数属于这个类别吗?
答
按我的理解线程安全不会受到影响,直到除非你是玩弄threads.you之间共享数据,必须注意的原子性,可视性等
如果有任何方法级变量被复制在每个线程执行堆栈中,只有存在共享数据时才会出现竞争条件,因此我们需要照顾。
虽然堆栈对当前线程是本地的,但是可以引用该堆栈上的共享对象。
你是指哪个文件被提交给该操作?如果是这种情况,它会为每个请求,并不会被共享。 – 2012-08-08 08:49:11
显示一些代码,否则我们只是猜测。根据定义,参数*是方法范围变量。在进一步深入研究之前,您可能需要重新研究一些Java基础知识。 – 2012-08-08 15:09:29
原始参数,是的。引用可变的对象不是很多..为你刷光了足够吗? – Thihara 2012-08-08 16:21:06