我想在java中创建一个应该每30秒运行一次的线程,并且应该在mySQL.Thanks中预先删除数据库中的特定记录。
答案 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);