-3

我想在java中创建一个应该每30秒运行一次的线程,并且应该在mySQL中删除数据库中的特定记录。提前致谢。

4

3 回答 3

2

出于同样的原因,我只是做了类似的事情,这是我的代码:

package com.xxx.thread;

public class Updater implements Runnable{

    @Override
    public void run() {

        while(true) {
            try {
                //do work here
                Thread.sleep(1000*60*60); //sleep time in ms
            } catch (InterruptedException ex) {
            }
        }
    }



}

要启动线程:

 Thread myThread = new Thread(new Updater());
 myThread.start();
于 2012-05-29T14:14:57.913 回答
2

需要一些代码示例?

public void schedule(){
    Timer timer = new Timer();
    timer.schedule(new TimerTask() {
        @Override
        public void run() {
            //TODO write your code
        }
    }, 1000,1000*30);
}
于 2012-05-29T14:17:28.453 回答
0

我不同意接受的答案。Thread.sleep可能是解决问题的最糟糕方法,因为它不准确且混乱(需要循环 + 调用sleep+ 取消机制)。最可接受的方法是使用ScheduledThreadPoolExecutor

ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(1);
exec.submit(new Runnable() {
      public void run() {
          // update db here
      }
   }, 0, 30, TimeUnit.SECONDS);
于 2012-05-29T15:17:55.897 回答