需求,在不同的ssm模块间,如果一个模块给给一个模块发任务,任务又好多,期间有某个任务死循环、崩了,怎么办?
所以在这里要做一个超时机制,监听每个任务,原理很简单,用一个线程不断去判断任务是否超时。
-
controller拿到任务,将拿到的元素和拿到时刻的时间记录下,存储在hashMap中
-
Timer线程不停的去遍历hashMap,将超时时间大于某个阀值的任务设置为超时连接,调用处理方法
这里要考虑的问题只有一个:要保证Timer复用
Timer:
public class Timer extends Thread {
private static Logger logger = LoggerFactory.getLogger(Timer.class);
//缓存机制
private static Map<String, String> map;
//超时阀值
private static int timestamp = 3000;
public Timer(Map<CmdNotice, String> map, CenterService centerService){
this.map = map;
}
public void run(){
try{
logger.info("--------------------center:启动超时线程--------------------");
Iterator<Entry<String, String>> it = map.entrySet().iterator();
while(it.hasNext()){
Entry<Stri