java threadlocal singleton - 它是什么?

jui*_*ohn 4 java jsf thread-local facescontext

外行人说,当有人说某个对象是Java中的线程单一单例时,它意味着什么?我正在参加有关Java Server Faces的讲座,每次谈到FacesContext时 - 讲师总是提醒我们这是一个线程单一的单身人士.

Bal*_*usC 14

FacesContext每个线程只有一个唯一的实例.

FacesServlet创建一个ThreadLocal<FacesContext>在HTTP servlet请求的开始和消除它与HTTP servlet请求相关联的HTTP servlet响应的结束.每当您FacesContext#getCurrentInstance()在JSF代码中执行操作时,您将始终在整个HTTP Servlet请求/响应处理中获得同一个实例.

由于HTTP servlet请求由不同的线程执行,并且FacesContext实例作为线程局部变量附加到单个线程,因此没有两个HTTP servlet请求共享同一个 FacesContext实例.