Есть ли какой-либо общий способ или правила, с помощью которых мы можем обеспечить безопасность потоков статических методов, специально используемых в различных классах полезности любых приложений. Здесь я хочу конкретно указать безопасность потоков веб-приложений.
Хорошо известно, что статические методы с неизменяемыми объектами в качестве параметров являются потокобезопасными, а Mutable Objects - нет.
Если у меня есть метод утилиты для некоторой обработки java.util.Date
, и этот метод принимает экземпляр java.util.Date
, тогда этот метод не будет потокобезопасным. Тогда как сделать его потокобезопасным без изменения способа передачи параметров?
public class DateUtils {
public static Date getNormalizeDate(Date date) {
// some operations
}
}
Также является ли класс javax.faces.context.FacesContext
изменчивым? Является ли потокобезопасным передать экземпляр этого класса в такой статический метод утилиты?
Этот список классов, экземпляры которых могут быть или не могут быть переданы как параметры, может быть длинным; поэтому какие моменты мы должны иметь в виду при написании кодов таких классов полезности?