我想在java中创建一个应该每30秒运行一次的线程,并且应该在mySQL中删除数据库中的特定记录。提前致谢。
问问题
139 次
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 回答