一个图书管理系统,要判断一个用户借书是否超过一个月,如果超过就提醒他
这个判断用户借书超过一个月有什么好一点的实现方法?
前提:
不能每一个用户操作都来一次判断
最好是每天都定时判断所有用户借书信息一次。(过期的改DB)
听说能用一个后台的线程来实现,就是具体不知道怎么样实现
请大家多多赐教

解决方案 »

  1.   

    用 java.util.Timer ,每24小时查找一次越期的用户
    然后提醒他们
      

  2.   

    用定时器public class ServerTask extends TimerTask {
        private static boolean isRunning=false;
        private static Logger logger = Logger.getLogger(ServerTask.class.getName());
        public void run(){
            if(!isRunning){
                isRunning=true;
                logger.info("任务开始启动……!");
                AutoServerService autoService= new AutoServerService();
                autoService.autoFinishMechanism();
                logger.info("任务执行结束!");
                isRunning=false;
            }else{
                logger.info("上次任务尚未完成!!");
            }
        }
    }
    public class TaskManager implements ServletContextListener { public static final long PERIOD_DAY = Globals.MILLIS_IN_DAY;//每天的毫秒数 public static final long PERIOD_WEEK = PERIOD_DAY * 7;//一周内的毫秒数 public static final long NO_DELAY = 0;//无延迟 private Timer timer;//定时器    public TaskManager() {
        }    /**
         * 在Web应用结束时停止任务
         * @param event ServletContextEvent
         */
        public void contextDestroyed(ServletContextEvent event) {
            timer.cancel(); // 定时器销毁
        }    /**
         * 在Web应用启动时初始化任务
         * @param event ServletContextEvent
         */
        public void contextInitialized(ServletContextEvent event) {
            timer = new Timer("自动发送短信消息任务",true); //定义定时器
    //        timer.schedule(new ServerTask(),NO_DELAY, 1000 * 120);//启动任务(每两分种一次)
    //          timer.schedule(new ServerTask(),NO_DELAY, 1000 * 1200);//启动任务(每二十分种一次)
            timer.schedule(new ServerTask(),NO_DELAY, 1000 * 3600);//启动任务(每小时一次)
    //        timer.schedule(new ServerTask(),NO_DELAY, 1000 * PERIOD_DAY);//启动任务(每天一次)
    //        timer.schedule(new ServerTask(),NO_DELAY, 1000 * PERIOD_WEEK);//启动任务(每周一次)
    //        timer.schedule(new ServerTask(),NO_DELAY, 1000 * PERIOD_WEEK * 4);//启动任务(每4周(月)一次)    }
    }
      

  3.   

    去看看多任务调度框架Quartz,很简单,定时作业,在指定的任意时刻自动执行你的代码
      

  4.   

    用触发器的话,应该怎么样设定触发条件呢?
    如果设“某个用户操作”为条件的话
    一定导致每个用户做操作都会引起“触发”执行
    不知道我有没有会错意,请高手指点定时器我到是会用,就是不知道能不能在web服务器启动时就让这个定时器自动启动起来(不用客户端发送http请求来触发)
    因为觉得这样的话,程序耦合得更低一点。(不知我问的是不是很简单的东西,我就是想不到到底应该怎么做)