如何让程序一直保持运行的状态?

tatajciliang 2013-01-28 03:53:07
想开发一个程序,程序从数据库获取某个数据,当这个数据是某某值的时候,发送邮件到指定的地址中。

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

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


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

...全文
2042 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
最初最后 2013-01-30
  • 打赏
  • 举报
回复
引用 楼主 tatajciliang 的回复:
想开发一个程序,程序从数据库获取某个数据,当这个数据是某某值的时候,发送邮件到指定的地址中。 我的问题是,当我开发完这个程序之后,怎么让该程序时刻运行着,就是时刻从数据库取值,然后判断这个值,当这个值是符合某个值的话就发送邮件。 还有一个问题就是,当从数据库取值,然后判断这个值符合某个条件之后,只发一次邮件,而不是一直发。 获取数据库的代码和发送邮件的代码已经写好,就是不知道……
首先将你调用方法的类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(); }
Enock2 2013-01-29
  • 打赏
  • 举报
回复
推荐spring+quartz制作定时器 很简单 可以设置每几秒执行一次method
bluemoby 2013-01-28
  • 打赏
  • 举报
回复
使用带停止变量的循环配合Thread.sleep()实现,或者使用定时器
简易人 2013-01-28
  • 打赏
  • 举报
回复
写个Servlet定时器吧!如果你没写过的话,留下你的邮箱,我可以写一个发你!
yuanfei213 2013-01-28
  • 打赏
  • 举报
回复
Timer和timeTask可以解决你的问题 或者直接用quartz框架
菖蒲老先生 2013-01-28
  • 打赏
  • 举报
回复
搜 Timer
tatajciliang 2013-01-28
  • 打赏
  • 举报
回复
计划任务只能某个时间执行一次,我想要的是程序一直执行,每隔半个小时执行一次或者一个小时执行一次。 就是让开发好的程序,一直处于运行状态。而不是手动去运行开发好的程序。 有没有相关的java示例源码,供参考的。定时器这个没在java做过。
BUG胡汉三 2013-01-28
  • 打赏
  • 举报
回复
写一个定时器~~~每隔几秒运行一次!!! 关于只发送一次的限制、你可以在去数据库取值的时候控制~~~取那些没有发送过的! 具体那些是没有发送过的、得看你程序的标识了、比如发送了的在某张表有关联、那么取值的时候关联查询过滤掉发送的.....要不就是简单一点、在数据库表中在加上一个字段! 如果发送的为1、没有发送的为0、默认为0! 那么你就可以在取值的时候直接取标识为0的来发送、在发送完成后把标识改为1!
snow-is-my-Love 2013-01-28
  • 打赏
  • 举报
回复
定时器 + 判断条件 足以满足上述 需求
linwz520 2013-01-28
  • 打赏
  • 举报
回复
用while(true){....}或for(;;){....}都行 至于只发一次,可以在循环外加一个变量标示一下比如a=1; 发完之后a=2或其他什么值,每次发之前判断下这个就行了,不等于1就标示已经发送过。
菖蒲老先生 2013-01-28
  • 打赏
  • 举报
回复
windows不是有定时任务计划么。。。
为啥呢 2013-01-28
  • 打赏
  • 举报
回复
一个有出口的死循环 比如 boolean tag=true; while(tag){ }

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧