是否有任何通用的方式或規則退出,我們可以通過該方式或規則退出來確保特定用於任何應用程序的各種Utility類中的靜態方法的線程安全性。這裏我想具體指出Web應用程序的線程安全性。如何確保實用靜態方法的線程安全?
衆所周知,以不可變對象作爲參數的靜態方法是線程安全的,可變對象不是。
如果我有一個對java.util.Date
的某些操作的實用方法,並且該方法接受java.util.Date
的實例,那麼此方法將不是線程安全的。那麼如何在不改變參數傳遞方式的情況下使線程安全?
public class DateUtils {
public static Date getNormalizeDate(Date date) {
// some operations
}
}
也是類javax.faces.context.FacesContext
可變嗎?將此類的實例傳遞給靜態工具方法是否安全?
該列表中的實例可以或不可以作爲參數傳遞的類的列表可能很長;所以在編寫這類實用程序類的代碼時,我們應該牢記什麼?
爲什麼投票和一個關閉請求?這是一個錯誤的問題嗎? –
你有沒有考慮過這個靜態方法'synchronized'? –
@AndrewLogvinov是的,我想過。但我不想在不知道爲什麼要這樣做的情況下同步一個方法。我們應該在什麼情況下使靜態方法同步? –