3
在外行人說話時,當有人說某個對象是Java中的線程本地單例時,這意味着什麼?我當時正在講關於Java Server Faces的講座,每次講到FacesContext時 - 講師總是提醒我們,它是一個線程本地單例。java threadlocal singleton - 它是什麼?
在外行人說話時,當有人說某個對象是Java中的線程本地單例時,這意味着什麼?我當時正在講關於Java Server Faces的講座,每次講到FacesContext時 - 講師總是提醒我們,它是一個線程本地單例。java threadlocal singleton - 它是什麼?
每個線程只有一個FacesContext
的唯一實例。
FacesServlet
在HTTP servlet請求的開始處創建一個ThreadLocal<FacesContext>
,並在與HTTP servlet請求關聯的HTTP servlet響應結束時將其除去。無論何時在JSF代碼中執行FacesContext#getCurrentInstance()
,都將始終在整個HTTP Servlet請求/響應處理中獲得同一個實例。
由於HTTP servlet請求由不同的線程執行,FacesContext
實例附加作爲線程本地變量到單個線程,沒有兩個HTTP servlet請求共享相同FacesContext
實例。