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;
}
单例模式---定时器的问题
最新推荐文章于 2023-08-13 22:04:14 发布
该博客探讨了在Java中如何使用单例模式来管理和控制定时器任务。当定时任务需要开启时,首先检查是否存在已运行的定时器,如果存在则取消并清理,然后创建新的定时器进行周期性执行。当定时任务需要关闭时,同样检查定时器是否正在运行,如果运行则取消并返回相应状态。博客内容展示了具体的代码实现,包括设置和取消定时任务的逻辑。
摘要由CSDN通过智能技术生成