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



我正试图每秒钟运行一个Thread类。我不能用Runnable。我尝试了下面的方式,但它抛出StackOverflowException。有谁能告诉我一个标准的方法让线程类每秒钟运行一次吗?

public class A extends Thread {
    public void run() {
       //do my stuff
      sleep(1*1000,0);
      run();
    }
}

在第一个参数中使用Timerschedule()scheduleAtFixedRate()(两者之间的区别)与TimerTask,其中您将覆盖run()方法。

的例子:

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

你的例子导致堆栈溢出,因为它是无限递归,你总是从run()调用run()

也许你想考虑一个替代方案,如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);
final ExecutorService es = Executors.newCachedThreadPool();
ScheduledExecutorService ses = Executors.newSingleThreadScheduledExecutor();
ses.scheduleAtFixedRate(new Runnable()
{
    @Override
    public void run()
    {
        es.submit(new Runnable()
        {
            @Override
            public void run()
            {
                // do your work here
            }
        });
    }
}, 0, 1, TimeUnit.SECONDS);

最新更新