我正在尝试每秒运行一个Thread类.我不能使用Runnable.我尝试以下方式,但它抛出StackOverflowException.任何人都可以让我知道一个标准的方法来让线程类每秒运行一次.
public class A extends Thread { public void run() { //do my stuff sleep(1*1000,0); run(); } }
解决方法
在第一个参数中使用
Timer
的
schedule()
或
scheduleAtFixedRate()
(
difference between these two)和
TimerTask
,其中您将覆盖run()方法.
例:
Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { // TODO do your thing } },1000);
你的例子导致堆栈溢出,因为它是无限递归,你总是从run()调用run().