2009-09-11 142 views
2

我正面臨着黑莓發展的問題。在我的應用程序,我必須從服務器獲取圖像,所以我必須創建一個單獨的連接線程爲我從服務器加載的每個圖像..但在這樣做,我得到TooManyThreadsException..Any有關控制線程的想法...太多的線程異常

在黑莓的應用程序可以有最多16個線程同時運行...但我有一次顯示16張以上的圖片...

+0

看看bf sdk的BrowserFieldDemo,可能會有用 – 2009-09-13 07:09:18

回答

5

重用線程,排隊的所有圖像,並運行只有幾個線程,每個線程每次處理一個圖像,然後轉到下一個。

有一個原因,該單位只允許每個進程16個,並且它與資源有關。你基本上必須用更少的線程來完成。

+0

但我真正面臨的問題是線程不會被破壞,當我按下後退按鈕時... 我希望這些線程儘快停止執行我按回按鈕...即使退出屏幕,這些線程仍繼續在後臺運行... – tek3 2009-09-11 14:00:14

+3

@NGA,使用線程池。那麼你將不必繼續創建/銷燬線程。當按下後退按鈕時,使用某種線程間消息傳遞系統發出線程信號,以便他們可以停止正在執行的操作。 – Glen 2009-09-11 14:09:50

1

對於像IE6這樣的舊版瀏覽器,它會遇到類似的限制,這會限制您每個域的併發連接數爲2個。

重新使用這些線程並以較少的併發線程串行下載圖像(可能使用2-3個線程來加快速度)。

只是在這裏進行推測,但將所有16個線程捆綁在一起似乎會導致一個不穩定的環境,因爲BB OS在您的程序運行時正在做其他事情。

1

我已經被教過,動態創建線程幾乎從來都不是一個好方法,我會創建1-2個工作線程,並有一個隊列可以爲我完成這項工作。