单例模式---定时器的问题

该博客探讨了在Java中如何使用单例模式来管理和控制定时器任务。当定时任务需要开启时,首先检查是否存在已运行的定时器,如果存在则取消并清理,然后创建新的定时器进行周期性执行。当定时任务需要关闭时,同样检查定时器是否正在运行,如果运行则取消并返回相应状态。博客内容展示了具体的代码实现,包括设置和取消定时任务的逻辑。
摘要由CSDN通过智能技术生成
public String AutoViewFromSMC(boolean isOpen,ConferenceId confId, String[] autoViewSiteUris, String timeSpan) {
		
		final String[] sArray = autoViewSiteUris;
		final ConferenceId confIdAuto = confId;

		if (isOpen) {
			
			if (timer != null) {//防止多次开启轮询造成异常
				Logger.info("当前存在轮询定时器!");
				timer.cancel();
				timer.purge();
				Logger.info("结束当前轮询定时器,进入新的轮询观看会场!");
			}
			
			timer = new Timer();
			timer.schedule(new TimerTask() {
				
				public void run() {
					
					Logger.info("AutoViewFromSMC调用SetBroadcast接口:");
					
					resultStr = smcService.SetBroadcast(confIdAuto, sArray[i]);
					
					Logger.info("AutoViewFromSMC调用SetBroadcast接口返回的结果:"+resultStr);
					
					Logger.info("AutoViewFromSMC调用SetVideoSource接口:");
					
					resultStr = smcService.SetVideoSource(confIdAuto,sArray[i], sArray[i]);
					
					Logger.info("AutoViewFromSMC调用SetVideoSource接口返回的结果:"+resultStr);
					
					i++;
					i = i % sArray.length;
				}

			}, 0, 1000 * Integer.valueOf(timeSpan));

		} else {
			if (timer != null) {
				timer.cancel();
				timer.purge();
				resultStr = "{\"data\":[],\"error\":{\"code\":\"\",\"msg\":\"\"},\"success\":1}";
			}else{
				resultStr = "{\"data\":[],\"error\":{\"code\":\"99999999\",\"msg\":\"此时不存在轮询观看会场,无法停止!\"},\"success\":0}";
			}
		}
		
		// 确保return 执行
		try {
			Thread.sleep(2000);//时间待定
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
		return resultStr;
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值