繁体   English   中英

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

[英]Android: Standard way to make a thread run every second

我试图每秒运行一个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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM