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