package com.dounine.corgi.demo.session;
import com.dounine.corgi.demo.entity.user.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.time.LocalDateTime;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
* Created by huanghuanlai on 16/6/14.
*/
public class SessionQuartz extends Thread{
private static final Logger CONSOLE = LoggerFactory.getLogger(SessionQuartz.class);
private static final int POLL_MIN = 1;//循环时间(分)
private static final int SESSION_TIMEOUT = 3;//会话过期时间
private Map<String,User> sessions;
public SessionQuartz(Map<String,User> sessions){
this.sessions = sessions;
}
@Override
public void run() {
try {
for(;;){
for(Map.Entry<String,User> entry : sessions.entrySet()){
if(entry.getValue().getAccessTime().plusMinutes(SESSION_TIMEOUT).isBefore(LocalDateTime.now())){
CONSOLE.info("remove token:"+entry.getKey());
sessions.remove(entry.getKey());
}
}
TimeUnit.MINUTES.sleep(POLL_MIN);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}