📄 updatestatustask.java
字号:
package com.infobank.superchannel.daemon.databasecache;import java.util.Queue;import org.apache.commons.configuration.Configuration;import com.infobank.superchannel.database.DAO;import com.infobank.superchannel.pojo.TextMessage;import com.infobank.superchannel.util.DaemonConfiguration;import com.infobank.superchannel.util.DatabaseConnectionPool;/** * @author Xiaoguang Sun * @version 类说明: 状态回写任务 */public class UpdateStatusTask implements Runnable { // 数据库缓冲服务器对象 private DatabaseCacheDaemon daemon=null; // 每次回写数据时间间隔(单位毫秒:1000毫秒=1秒) private int interval=0; /** * 构造函数 * @param daemon 数据库缓冲服务器对象 */ public UpdateStatusTask(DatabaseCacheDaemon daemon){ this.daemon=daemon; DaemonConfiguration config=DaemonConfiguration.getInstance(); interval=config.getInt("/daemon[@type='DatabaseCache']/task/updater/status/interval"); } /** * 信息状态回写任务执行体 */ public void run() { DAO dao=DAO.getInstance(); DatabaseConnectionPool dbcp=DatabaseConnectionPool.getInstance(); while(daemon.isRunnable()){ try{ if(daemon.isPaused()){ Thread.sleep(interval); continue; } } catch (InterruptedException ex){ // interrupted. probably want to exit if(!daemon.isRunnable()){ System.out.println("正在停止数据更新任务"); return; } } // 取得待回写信息状态 Queue<TextMessage> pendingStatus=daemon.getPendingStatusUpdate(); if(pendingStatus!=null&&!pendingStatus.isEmpty()){ // 将信息回写回数据库 dao.updateMessageStatus(pendingStatus); } try { Thread.sleep(interval); //查询表的间隔 } catch (Exception e) { System.err.println("Interrupted"); return; } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -