我在 Sun 的“Core Servlets and JavaServer Pages vol 2”中看到了一个带有会话计数器的示例。
计数器只是建立在使用/HttpSessionListener
增加/减少会话计数的基础上:sessionCreated
sessionDestroyed
public class SessionCounter implements HttpSessionListener {
private int currentSessionCount = 0;
public void sessionCreated(HttpSessionEvent event) {
currentSessionCount++;
}
...
public int getTotalSessionCount() {
return(totalSessionCount);
}
... // counter decrement, self registering in context attribute etc.
侦听器在上下文中注册自己,因此servlets
可以访问它并获取计数器值。
没有同步块。
它安全吗,currentSessionCount
不是volatile
吗?
可以currentSessionCount
缓存在 CPU 寄存器中,并且对于服务请求的其他线程的确切值不可见servlets
?