javaweb,监听器和定时器(Quartz)互相调控的问题
最近写了一个系统(javaweb),用到了监听器和定时器(Quartz)。开发过程中,有以下需求。1,监听器在程序启动的时候启动,监听器负责处理表A,如果表A有记录就处理...
最近写了一个系统(javaweb),用到了监听器和定时器(Quartz)。
开发过程中,有以下需求。
1,监听器在程序启动的时候启动,监听器负责处理表A,如果表A有记录就处理,并删除。没有记录就等待5秒。
2,监听器在处理表A之前,需要判断一下定时器是否启动,如果启动,监听器进入等待。直到定时器完成任务,才停止等待。
3,定时器启动时,需要判断一下,A表中是否有未处理完的数据,如果有,定时器延迟启动,等待监听器的处理。
如何在程序中判断 定时器当前的状态。
如何让定时器延时启动。
求大神 解答。回答的时候详细一点。 展开
开发过程中,有以下需求。
1,监听器在程序启动的时候启动,监听器负责处理表A,如果表A有记录就处理,并删除。没有记录就等待5秒。
2,监听器在处理表A之前,需要判断一下定时器是否启动,如果启动,监听器进入等待。直到定时器完成任务,才停止等待。
3,定时器启动时,需要判断一下,A表中是否有未处理完的数据,如果有,定时器延迟启动,等待监听器的处理。
如何在程序中判断 定时器当前的状态。
如何让定时器延时启动。
求大神 解答。回答的时候详细一点。 展开
2个回答
展开全部
public class Listener {
public static Object lock = new Object();
public void run() {
while (true) {
synchronized (Listener.lock) {
if (hasData()) {
//do check data
}
nodifyForLock();
}
threadSleep();
}
}
public static boolean hasData() {
// return has data
}
public static void threadSleep() {
//sleep 5 second
}
private void nodifyForLock() {
Listener.lock.notify();
}
}
public class Quartz {
public void run() {
synchronized (Listener.lock) {
if (Listener.hasData()) {
waitForLock();
}
//do quartz
}
}
private void waitForLock() {
try {
Listener.lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
使用同步锁机制,确保监听器和定时器不会同时运行。
使用Wait Nodify机制,确保有数据时定时器会等待,直到数据处理完成。
2014-08-23 · 知道合伙人软件行家
关注
展开全部
不明白你为什么要这样设计程序
通常情况下监听器只是用来启动定时器,剩下的工作都是让定时器去处理
因为你想,你的定时器怎么启动起来的?
肯定是交给监听器去启动,例如servlet监听器,servlet容器一创建就执行,也就是服务器一启动就执行,这个时候你在监听器里开启一个定时器就做事就行了
接下来就是让你的定时器去定时 定时5秒去查询表A有没有数据如果有就处理就行了
定时器本身就是定时执行,因此不需要延时启动了
纯手工打字的,请采纳哈
通常情况下监听器只是用来启动定时器,剩下的工作都是让定时器去处理
因为你想,你的定时器怎么启动起来的?
肯定是交给监听器去启动,例如servlet监听器,servlet容器一创建就执行,也就是服务器一启动就执行,这个时候你在监听器里开启一个定时器就做事就行了
接下来就是让你的定时器去定时 定时5秒去查询表A有没有数据如果有就处理就行了
定时器本身就是定时执行,因此不需要延时启动了
纯手工打字的,请采纳哈
追问
恩对,程序启动时启动定时器,不过这个定时器是每天0点执行任务。
我想在它执行任务之前,判断一下队列表中是否有未处理的记录。
如果有,定时器任务就延时执行。等监听器处理完后,再执行。
我想做这个需求。
追答
那你就判断如果没有任务,那你就把当前这个定时器取消掉 调用cancel();
重新创建一个定时器,创建定时器的时候是可以指定延迟执行的
java.util.Timer.schedule(task, delay, period);
task 就是定时器实例
delay就是延迟时间
period就是间格时间
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询