java添加超时检测

针对模块间任务可能出现的死循环或崩溃问题,本文介绍了一种Java超时检测机制。通过在Controller中记录任务开始时间和使用Timer线程定期检查HashMap中的任务,当任务超时时将其标记并执行相应处理。关键在于确保Timer线程的复用,以提高效率。
摘要由CSDN通过智能技术生成

需求,在不同的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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值