java threadlocal singleton - 它是什么?

时间:2011-02-28 03:10:21

标签: java jsf thread-local facescontext

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

1 个答案:

答案 0 :(得分:14)

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

FacesServlet在HTTP servlet请求的开头创建一个ThreadLocal<FacesContext>,并在与HTTP servlet请求关联的HTTP servlet响应的末尾删除它。每当您在JSF代码中执行FacesContext#getCurrentInstance()时,您将始终在整个HTTP Servlet请求/响应处理中获得同一个实例。

由于HTTP servlet请求由不同的线程执行,而FacesContext实例作为线程局部变量附加到单个线程,因此没有两个HTTP servlet请求共享相同的 {{1}实例。