我正在開發一個android應用程序,我想在特定的函數上執行不同的線程。現在,當這個線程運行時,我不希望創建另一個線程。所以基本上,我想要主線程檢查線程是否正在運行,如果是,我希望它繞過線程;如果不是,那麼我希望它創建一個線程並執行該功能。我該怎麼做呢?如何檢查線程是否正在運行?
回答
在這種情況下,我寧可建議使用Future
。請將您的代碼作爲FutureTask
。使用Future.isDone
會告訴你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
如果Future.isDone返回false,那麼在呼叫返回時,Future是否完成不了? –
是的。文件證實了這一點。 – Jatin
嗯..我非常懷疑這些'IsAlive'中的任何一個,'IsDone'調用會返回一些線程/任務的狀態,這些線程或任務可能在另一個核心上併發執行。在布爾值被重新調用的時候,它可能不再有效。 –
您可以檢查Thread.isAlive()方法。
它測試這個線程是否還活着。如果線程 已啓動並且尚未終止,則線程仍處於活動狀態。
如果Thread.isAlive返回true,那麼線程在返回時仍處於活動狀態? –
@MartinJames是 – TN888
@ Ty221好的。我想知道Thread.isAlive調用是如何防止線程在檢查完狀態之後但在返回之前正常終止的? –
我已經使用這個,它的做工精細
if (thread.getState() == Thread.State.NEW)
{
thread.start();
}
- 1. 如何檢查我的線程是否正在運行Java
- 2. 如何檢查線程是否正在運行
- 3. 檢查進程是否正在運行
- 4. 檢查程序是否正在運行
- 5. 檢查進程是否正在運行
- 6. 檢查程序是否正在運行
- 7. 檢查父線程是否正在運行
- 8. 如何檢查一個線程是否在C#中運行?
- 9. 如何檢查線程是否正在運行或等待在Android
- 10. 如何檢查應用程序是否正在運行,否則運行它?
- 11. 如何檢查Hadoop守護進程是否正在運行?
- 12. 如何檢查某個進程是否正在運行或不
- 13. C程序 - 如何檢查Web服務是否正在運行
- 14. 如何檢查某人是否正在運行我的程序?
- 15. 如何以編程方式檢查Zookeeper是否正在運行
- 16. 如何檢查Linux中是否正在運行進程?
- 17. 如何檢查給定PID的過程是否正在運行?
- 18. 如何檢查是否一些進程正在運行
- 19. 如何檢查Powershell腳本是否正在遠程運行
- 20. 如何檢查進程是否正在運行
- 21. 如何以編程方式檢查Zookeeper是否正在運行?
- 22. 如何檢查進程是否正在運行 - Linux
- 23. 如何檢查線程是否正在運行或使用swift完成
- 24. 如何檢查boost線程是否正在運行並終止它
- 25. 如何檢查我的多線程代碼是否在多線程上運行?
- 26. 檢查SKAction是否正在運行
- 27. 檢查服務是否正在運行?
- 28. 檢查SKNode是否正在運行SKAction
- 29. LPC17xx:檢查RTC是否正在運行
- 30. 檢查服務是否正在運行
好了,你知道一點關於線程。 Thread接口提供了什麼?提示:參見'isAlive()'。 – andy256
在線程中運行一段時間(true)循環。讓線程在某個同步對象的頂部等待。當你想要執行你的功能時,發出同步信號。不需要任何可疑的檢查。需要CPU週期的 –
。如果線程完成,最好添加一個單獨的類來發送事件。與此同時,如果事件尚未發送,isBusyFlag將保持爲真。這需要較少的CPU週期。 – KarelG