java threadlocal singleton – 它是什么?
外行人说,当有人说某个对象是Java中的线程单例时,它意味着什么? 我正在参加关于Java Server Faces的讲座,每次谈到FacesContext时 – 讲师总是提醒我们它是一个线程本地单例。
每个线程只有一个FacesContext
唯一实例。
FacesServlet
在HTTP servlet请求的开头创建一个ThreadLocal
,并在与HTTP servlet请求关联的HTTP servlet响应的末尾删除它。 每当您在JSF代码中执行FacesContext#getCurrentInstance()
时,您将始终在整个HTTP Servlet请求/响应处理中获得同一个实例。
由于HTTP servlet请求由不同的线程执行,并且FacesContext
实例作为线程局部变量附加到单个线程,因此没有两个HTTP servlet请求共享相同的 FacesContext
实例。