Android:每秒运行一次线程的标准方法

mad*_*dhu 7 java multithreading android

我正试图Thread每秒跑一堂课.我不能使用Runnable.我尝试了以下方式,但它的投掷StackOverflowException.任何人都可以让我知道一个标准的方法来让线程类每秒运行一次.

public class A extends Thread {

    public void run() {
       //do my stuff
      sleep(1*1000,0);
      run();
    }
}
Run Code Online (Sandbox Code Playgroud)

Ada*_*zyk 16

在第一个参数中使用Timer's schedule()scheduleAtFixedRate()(这两者之间的差异)TimerTask,其中您将覆盖该run()方法.

例:

Timer timer = new Timer();
timer.schedule(new TimerTask()
{
    @Override
    public void run()
    {
        // TODO do your thing
    }
}, 0, 1000);
Run Code Online (Sandbox Code Playgroud)

你的榜样导致堆栈溢出,因为它是无穷递归,你总是打电话run()run().


Chr*_*app 3

也许您想考虑像ScheduledExecutorService这样的替代方案

ScheduledExecutorService scheduleTaskExecutor = Executors.newScheduledThreadPool(5);

/*This schedules a runnable task every second*/
scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
  public void run() {
    DoWhateverYouWant();
  }
}, 0, 1, TimeUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)