如何检查线程是否正在运行?

时间:2013-07-25 08:14:28

标签: android multithreading

我正在开发一个Android应用程序,我希望在不同的线程上执行特定的功能。现在,当这个线程运行时,我不希望创建另一个线程。所以基本上,我希望主线程检查线程是否正在运行,如果是,我希望它绕过线程;如果不是那么我希望它创建一个线程并执行该功能。我该怎么做?

3 个答案:

答案 0 :(得分:4)

您可以查看Thread.isAlive()方法。

  

它测试此线程是否存活。如果一个线程已存在,则它是活动的   开始了,还没有死。

答案 1 :(得分:2)

我建议在这种情况下使用Future。将您的代码设为FutureTask。使用Future.isDone会告诉您Future是否已完成。如果是的话,也会给你返回值。

好的部分是你可以使用相同的线程来执行多个代码块作为Future。

目前,如果你这样做:

Runnable myRunnable;
Thread t = new Thread(myRunnable);

现在你应该:

Future<Void> future = new FutureTask<Void>(myRunnable);
ExecutorService ex= Executors.newFixedThreadPool(1);
ex.submit(future);

future.isDone会给你你想要的。您可以继续重复使用ex

答案 2 :(得分:0)

我已经使用了这个,并且工作正常

if (thread.getState() == Thread.State.NEW)
{
     thread.start();
}