我的问题是,当我开发完这个程序之后,怎么让该程序时刻运行着,就是时刻从数据库取值,然后判断这个值,当这个值是符合某个值的话就发送邮件。
还有一个问题就是,当从数据库取值,然后判断这个值符合某个条件之后,只发一次邮件,而不是一直发。
获取数据库的代码和发送邮件的代码已经写好,就是不知道怎么时刻让程序处于运行状态。
12 个解决方案
#1
一个有出口的死循环
比如
boolean tag=true;
while(tag){
}
比如
boolean tag=true;
while(tag){
}
#2
windows不是有定时任务计划么。。。
#3
用while(true){....}或for(;;){....}都行
至于只发一次,可以在循环外加一个变量标示一下比如a=1; 发完之后a=2或其他什么值,每次发之前判断下这个就行了,不等于1就标示已经发送过。
至于只发一次,可以在循环外加一个变量标示一下比如a=1; 发完之后a=2或其他什么值,每次发之前判断下这个就行了,不等于1就标示已经发送过。
#4
定时器 + 判断条件 足以满足上述 需求
#5
写一个定时器~~~每隔几秒运行一次!!!
关于只发送一次的限制、你可以在去数据库取值的时候控制~~~取那些没有发送过的!
具体那些是没有发送过的、得看你程序的标识了、比如发送了的在某张表有关联、那么取值的时候关联查询过滤掉发送的.....要不就是简单一点、在数据库表中在加上一个字段!
如果发送的为1、没有发送的为0、默认为0!
那么你就可以在取值的时候直接取标识为0的来发送、在发送完成后把标识改为1!
关于只发送一次的限制、你可以在去数据库取值的时候控制~~~取那些没有发送过的!
具体那些是没有发送过的、得看你程序的标识了、比如发送了的在某张表有关联、那么取值的时候关联查询过滤掉发送的.....要不就是简单一点、在数据库表中在加上一个字段!
如果发送的为1、没有发送的为0、默认为0!
那么你就可以在取值的时候直接取标识为0的来发送、在发送完成后把标识改为1!
#6
计划任务只能某个时间执行一次,我想要的是程序一直执行,每隔半个小时执行一次或者一个小时执行一次。
就是让开发好的程序,一直处于运行状态。而不是手动去运行开发好的程序。
有没有相关的java示例源码,供参考的。定时器这个没在java做过。
就是让开发好的程序,一直处于运行状态。而不是手动去运行开发好的程序。
有没有相关的java示例源码,供参考的。定时器这个没在java做过。
#7
搜 Timer
#8
Timer和timeTask可以解决你的问题
或者直接用quartz框架
或者直接用quartz框架
#9
写个Servlet定时器吧!如果你没写过的话,留下你的邮箱,我可以写一个发你!
#10
使用带停止变量的循环配合Thread.sleep()实现,或者使用定时器
#11
推荐spring+quartz制作定时器 很简单 可以设置每几秒执行一次method
#12
首先将你调用方法的类implements Job继承接口
然后public final void execute(JobExecutionContext context)
throws JobExecutionException {}写一个这个方法 把你方法类里的方法调用都放进去
创建一个Server类在main方法中
try{
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
String sconf1m = "10 0/2 * * * ?"; //每2分钟触发一次
M1Job m1job = new M1Job(); //这里是你继承implements Job接口类
JobDetail job1m = new JobDetail("job1m", "group1m", m1job.getClass());
CronTrigger trigger1m = new CronTrigger("trigger1m", "group1m", "job1m", "group1m",sconf1m);
sched.addJob(job1m, true);
sched.scheduleJob(trigger1m);
sched.start();
}
catch(Exception e)
{
e.printStackTrace();
}
#1
一个有出口的死循环
比如
boolean tag=true;
while(tag){
}
比如
boolean tag=true;
while(tag){
}
#2
windows不是有定时任务计划么。。。
#3
用while(true){....}或for(;;){....}都行
至于只发一次,可以在循环外加一个变量标示一下比如a=1; 发完之后a=2或其他什么值,每次发之前判断下这个就行了,不等于1就标示已经发送过。
至于只发一次,可以在循环外加一个变量标示一下比如a=1; 发完之后a=2或其他什么值,每次发之前判断下这个就行了,不等于1就标示已经发送过。
#4
定时器 + 判断条件 足以满足上述 需求
#5
写一个定时器~~~每隔几秒运行一次!!!
关于只发送一次的限制、你可以在去数据库取值的时候控制~~~取那些没有发送过的!
具体那些是没有发送过的、得看你程序的标识了、比如发送了的在某张表有关联、那么取值的时候关联查询过滤掉发送的.....要不就是简单一点、在数据库表中在加上一个字段!
如果发送的为1、没有发送的为0、默认为0!
那么你就可以在取值的时候直接取标识为0的来发送、在发送完成后把标识改为1!
关于只发送一次的限制、你可以在去数据库取值的时候控制~~~取那些没有发送过的!
具体那些是没有发送过的、得看你程序的标识了、比如发送了的在某张表有关联、那么取值的时候关联查询过滤掉发送的.....要不就是简单一点、在数据库表中在加上一个字段!
如果发送的为1、没有发送的为0、默认为0!
那么你就可以在取值的时候直接取标识为0的来发送、在发送完成后把标识改为1!
#6
计划任务只能某个时间执行一次,我想要的是程序一直执行,每隔半个小时执行一次或者一个小时执行一次。
就是让开发好的程序,一直处于运行状态。而不是手动去运行开发好的程序。
有没有相关的java示例源码,供参考的。定时器这个没在java做过。
就是让开发好的程序,一直处于运行状态。而不是手动去运行开发好的程序。
有没有相关的java示例源码,供参考的。定时器这个没在java做过。
#7
搜 Timer
#8
Timer和timeTask可以解决你的问题
或者直接用quartz框架
或者直接用quartz框架
#9
写个Servlet定时器吧!如果你没写过的话,留下你的邮箱,我可以写一个发你!
#10
使用带停止变量的循环配合Thread.sleep()实现,或者使用定时器
#11
推荐spring+quartz制作定时器 很简单 可以设置每几秒执行一次method
#12
首先将你调用方法的类implements Job继承接口
然后public final void execute(JobExecutionContext context)
throws JobExecutionException {}写一个这个方法 把你方法类里的方法调用都放进去
创建一个Server类在main方法中
try{
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
String sconf1m = "10 0/2 * * * ?"; //每2分钟触发一次
M1Job m1job = new M1Job(); //这里是你继承implements Job接口类
JobDetail job1m = new JobDetail("job1m", "group1m", m1job.getClass());
CronTrigger trigger1m = new CronTrigger("trigger1m", "group1m", "job1m", "group1m",sconf1m);
sched.addJob(job1m, true);
sched.scheduleJob(trigger1m);
sched.start();
}
catch(Exception e)
{
e.printStackTrace();
}