1

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

4

3 回答 3

4

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

它测试这个线程是否还活着。如果线程已启动且尚未死亡,则该线程处于活动状态。

于 2013-07-25T08:21:27.163 回答
2

我宁愿建议Future在这种情况下使用 a 。将您的代码作为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

于 2013-07-25T08:19:57.373 回答
0

我用过这个,它工作正常

if (thread.getState() == Thread.State.NEW)
{
     thread.start();
}
于 2015-11-02T09:00:14.667 回答