如何使用java创建每30秒运行一次的线程?

时间:2012-05-29 14:08:45

标签: java mysql multithreading

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

3 个答案:

答案 0 :(得分: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();

答案 1 :(得分:2)

需要一些代码示例吗?

public void schedule(){
    Timer timer = new Timer();
    timer.schedule(new TimerTask() {
        @Override
        public void run() {
            //TODO write your code
        }
    }, 1000,1000*30);
}

答案 2 :(得分:0)

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

ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(1);
exec.submit(new Runnable() {
      public void run() {
          // update db here
      }
   }, 0, 30, TimeUnit.SECONDS);