2012-05-29 42 views
-3

我想在java中创建一个应该每30秒运行一次的线程,并且应该先删除mySQL中数据库中的特定记录。如何创建使用java每30secs应该运行的线程?

+2

那么你有什么尝试?你能编辑你的帖子来显示一些代码示例吗?你做了什么研究? – Gray

+3

你的问题是什么?如果我们可以为你写代码?向我们展示您的解决方案,我们将帮助您改进。 – toniedzwiedz

+1

[这不是你的个人研究助手](http://meta.stackexchange.com/a/128553/148287)! –

回答

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(); 
+0

非常感谢你以上代码对我有用 – krishh

2

需要一些代码样本?

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

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

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