我知道Struts 2 Actions是线程安全的。但是如果这些Action类包含对实用程序静态方法的方法调用会发生什么?线程安全会受到损害吗?
使用一个实用程序方法来解析上传的excel文件等。如果该方法要声明为静态,是否应该同步?
更新
我只是在读取文件,并且文件被提交给动作,所以它本身应该是线程安全的......但是由于解析是在实用程序方法中完成的,我怀疑是否需要同步或不。但显然如果你只访问方法范围变量,它应该是线程安全的。但像File这样的参数是否属于该类别?
答案 0 :(得分:3)
根据我的理解,除非你在线程之间使用共享数据,否则线程的安全性不会受到影响。你必须注意原子性,可见性等。
如果在每个线程执行堆栈中复制了任何方法级别变量,并且只有竞争条件可能会出现,如果有任何共享数据,我们需要处理这些变量。
虽然堆栈是当前线程的本地,但是可以引用该堆栈上的共享对象。