给大家推荐个靠谱的公众号程序员探索之路,大家一起加油
public void sessionCreated(HttpSessionEvent se) {
// TODO Auto-generated method stub
HttpSessionEvent session = se;
System.out.println("Session创建了");// 10秒后 过期时间// 当一个session过期了,就不能用了,但是他还在内存中 并没有销毁 Tomcat会定期清内存// 或者内存吃紧的时候会清内存// se.getSession().setMaxInactiveInterval(10);new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubtry {Thread.sleep(5000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}session.getSession().invalidate();}}).start();}
因为生存期的问题,当程序从上向下执行结束后,成员变量就会消亡,而上述线程先睡5秒在执行,那么如果成员变量死亡了,线程就使用不了,就会出错。
所以java规定如果是这样那么,成员变量必须加final,把成员变量放在常量池中,延长生命期。
或者定义一个全局变量