通俗地说,当有人说对象是 Java 中的线程本地单例时,这是什么意思?我参加了一个关于 Java Server Faces 的讲座,每次谈到 FacesContext 时——讲师总是提醒我们它是一个线程本地单例。
问问题
1748 次
1 回答
14
FacesContext
每个线程只有一个唯一实例。
它在 HTTP servlet 请求的开头FacesServlet
创建一个ThreadLocal<FacesContext>
,并在与 HTTP servlet 请求关联的 HTTP servlet 响应的结尾删除它。每当您FacesContext#getCurrentInstance()
在 JSF 代码中执行操作时,您将始终在整个 HTTP servlet 请求/响应处理过程中获得同一个实例。
由于 HTTP servlet 请求由不同的线程执行,并且FacesContext
实例作为线程局部变量附加到单个线程,因此没有两个 HTTP servlet 请求共享同一个 FacesContext
实例。
于 2011-02-28T03:15:57.367 回答