是否有任何通用的方法或规则可以确保在任何应用程序的各种实用程序类中专门使用的静态方法的线程安全性。这里我想特别指出 Web 应用程序的线程安全性。
众所周知,以不可变对象为参数的静态方法是线程安全的,而可变对象则不是。
如果我有一个对 java.util.Date
进行某种操作的实用方法,并且该方法接受 java.util.Date
的一个实例,那么这个方法将不是线程安全的。那么如何在不改变参数传递方式的情况下保证线程安全呢?
public class DateUtils {
public static Date getNormalizeDate(Date date) {
// some operations
}
}
类 javax.faces.context.FacesContext
也是可变的吗?将此类的实例传递给这种静态实用工具方法是否线程安全?
这些类的实例可以或不能作为参数传递,这个列表可能很长; 那么在编写这些实用程序类的代码时,我们应该记住哪些要点呢?