如何实现每30秒就执行一段程序?

peppi 2002-12-26 02:03:00
假设我有一方法:
public void a()
{
System.out.println("testing");
}

我有多少种方法可以让它每隔30秒就执行一次?永不停止!
请重点说明如何利用线程来实现,谢谢!最好有代码.
...全文
33 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
deniswang 2002-12-26
线程无法保证时间准确,最好用Timer
回复
觉得beyond_xiruo(希偌)的方法正规!标准计时器的使用。
线程睡30秒不是准确时间.
回复
SnowOct 2002-12-26
支持一下
回复
jackal81 2002-12-26
同意 wang_zheng_wz(流星雨) 的说法
回复
希偌 2002-12-26
interface TimerListener{
public void processEvent();
}

public Class Clock implements TimerListener{
Clock(){
Timer t=new Timer(this); //向Timer类登记
}
public void processEvent(){
//你的事件处理的代码
}
}

class Timer extends Thread {

private TimerListener tl;
Timer(TimerListener tl){
this.tl=tl;
}
public void run(){
while(true){
sleep(1000);
tl.processEvent();
}
}
}
回复
wang_zheng_wz 2002-12-26
用线程:
import java.io.*;


class AThread extends Thread {
private boolean stop = false;

public void terminate() {
stop = true;
}

public AThread() {
this.start();
}

public void run() {
while (!stop) {
try {
sleep(30 * 1000);
} catch (InterruptedException e) {
System.err.println("Interrupted");
}
System.out.println("testing");
}
}
}


public class Test {
public static void main(String[] args) throws IOException {
AThread a = new AThread();
System.out.println("Press enter");
System.in.read();
a.terminate();
}
}

不用线程:
用java.util.Timer
回复
deniswang 2002-12-26
用timer
回复
希偌 2002-12-26
用线程
public void a() throws Exception
{
while(true) {
System.out.println("testing");
Thread.sleep(30000);
}
}
回复
发动态
发帖子
Java SE
创建于2007-09-28

6.1w+

社区成员

Java 2 Standard Edition
申请成为版主
社区公告
暂无公告