当前位置: 代码迷 >> J2EE >> Java timer 施用
  详细解决方案

Java timer 施用

热度:547   发布时间:2016-04-22 01:08:54.0
Java timer 使用
写了一个一直运行的程序,我本意是想要1分钟调用一次计时器,minutes的值是1,刚刚运行的时候是没问题的,可是连续运行三四天之后,发现每分钟有好几次计时器的输出。整个程序中,仅调用一次start,请问是使用错误了吗?代码如下
Java code
    public void start() {        timer.schedule(new TimerTask() {            public void run() {                exec();                //timer.cancel();            }            private void exec() {                String tmp = TimeUtil.getAllTime();                String time1 = tmp.substring(0,4);                System.out.println("Timer is Running:"+tmp);                if(time1.equals(mytime1))                {                    tds.newFile();                    System.out.println("Reach 8:30,create new file");                    iswriteFlag =1;                }else if(time1.equals(refreshTime))                {                    iswriteFlag =0;                }else                {                                    }                // Start a new thread to play a sound...            }        },  minutes * 60 * 1000, minutes * 60 * 1000);// 使用毫秒计数        //}, 2000,2000);// 使用毫秒计数    }


------解决方案--------------------
schedule方法不是很精确(不过如果处理不复杂应该影响不大)
改成scheduleAtFixedRate试试看吧
另,看LZ的代码好像后面是启动别的程序来处理(声音)?线程的执行是随机的,所以不能保证线程立刻执行,这样两次处理声音不能准确保证间隔是1分钟
  相关解决方案