[英]Is it ok if a worker thread that pulls from a BlockingQueue never exits in android?
我有一個基本上看起來像這樣的線程:
public void run() throws InterruptedException {
while(true) {
String curUrl = taskQueue.take();
...
}
}
我知道我可以將true
更改為volatile變量,並在我不再需要它時將其設置為false,但它會在我的應用程序中使用,因此很難判斷它何時不再需要。
我想知道如果有一個無限循環將對其余的android VM的性能產生可見的影響,如果它仍處於阻塞狀態,即使我的應用程序沒有運行。
編輯1:啟動線程的代碼只有在尚未運行的情況下才會啟動它。
由於taskQueue是一個阻塞隊列,沒有。 讓該線程在整個應用程序的生命周期中運行不會產生任何明顯的影響。
如果TaskQueue不是阻塞,那么它會。 您的應用程序將盡可能快地消耗幾乎整個處理能力的核心。
阻塞隊列將導致線程調用方法'take'停止,直到有一些結果可用於返回。 非阻塞隊列將返回null或拋出異常。
Android將在未使用時終止您的應用程序進程,這將包括終止您的等待線程,因此通常在用戶切換到其他任務后不會長時間停留。 我不擔心,如果很難知道何時不再需要它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.