日期:2014-05-17  浏览次数:20797 次

如何让程序一直保持运行的状态?
想开发一个程序,程序从数据库获取某个数据,当这个数据是某某值的时候,发送邮件到指定的地址中。

我的问题是,当我开发完这个程序之后,怎么让该程序时刻运行着,就是时刻从数据库取值,然后判断这个值,当这个值是符合某个值的话就发送邮件。

还有一个问题就是,当从数据库取值,然后判断这个值符合某个条件之后,只发一次邮件,而不是一直发。


获取数据库的代码和发送邮件的代码已经写好,就是不知道怎么时刻让程序处于运行状态。


------解决方案--------------------
一个有出口的死循环
比如
boolean tag=true;
while(tag){
}
------解决方案--------------------
windows不是有定时任务计划么。。。

------解决方案--------------------
用while(true){....}或for(;;){....}都行
至于只发一次,可以在循环外加一个变量标示一下比如a=1;  发完之后a=2或其他什么值,每次发之前判断下这个就行了,不等于1就标示已经发送过。
------解决方案--------------------
定时器 + 判断条件  足以满足上述 需求
------解决方案--------------------
写一个定时器~~~每隔几秒运行一次!!!

关于只发送一次的限制、你可以在去数据库取值的时候控制~~~取那些没有发送过的!
具体那些是没有发送过的、得看你程序的标识了、比如发送了的在某张表有关联、那么取值的时候关联查询过滤掉发送的.....要不就是简单一点、在数据库表中在加上一个字段!
  如果发送的为1、没有发送的为0、默认为0!
 那么你就可以在取值的时候直接取标识为0的来发送、在发送完成后把标识改为1!
------解决方案--------------------
搜 Timer
------解决方案--------------------
Timer和timeTask可以解决你的问题
或者直接用quartz框架
------解决方案--------------------
写个Servlet定时器吧!如果你没写过的话,留下你的邮箱,我可以写一个发你!
------解决方案--------------------
使用带停止变量的循环配合Thread.sleep()实现,或者使用定时器
------解决方案--------------------
推荐spring+quartz制作定时器  很简单  可以设置每几秒执行一次method 
------解决方案--------------------
引用:
想开发一个程序,程序从数据库获取某个数据,当这个数据是某某值的时候,发送邮件到指定的地址中。

我的问题是,当我开发完这个程序之后,怎么让该程序时刻运行着,就是时刻从数据库取值,然后判断这个值,当这个值是符合某个值的话就发送邮件。

还有一个问题就是,当从数据库取值,然后判断这个值符合某个条件之后,只发一次邮件,而不是一直发。


获取数据库的代码和发送邮件的代码已经写好,就是不知道……


首先将你调用方法的类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();
}