我已經閱讀了很多評論,順便提一下,黑莓線程模型偏離了Java標準,可能會導致問題,但沒有任何數量的谷歌搜索啓發我這意味着什麼。黑莓線程模型
我一直在爲BlackBerry開發一個相當大的業務應用程序,儘管我沒有任何以前的Java多線程應用程序的經驗,但還沒有遇到任何我們已經能夠除了我們自己造成的外,我們不得不責怪線程。
有人可以確切描述BlackBerry線程模型是如何不同的,以及我作爲開發人員應如何考慮?顯然這個話題的任何鏈接也會很棒。
我已經閱讀了很多評論,順便提一下,黑莓線程模型偏離了Java標準,可能會導致問題,但沒有任何數量的谷歌搜索啓發我這意味着什麼。黑莓線程模型
我一直在爲BlackBerry開發一個相當大的業務應用程序,儘管我沒有任何以前的Java多線程應用程序的經驗,但還沒有遇到任何我們已經能夠除了我們自己造成的外,我們不得不責怪線程。
有人可以確切描述BlackBerry線程模型是如何不同的,以及我作爲開發人員應如何考慮?顯然這個話題的任何鏈接也會很棒。
我能想到的唯一問題在another stackoverflow question的答案中討論。
兩個怪癖我在黑莓論壇上發現:
1.UI 用戶界面操作總是需要在UI線程中運行。要執行像LabelField.setText("foo");
這樣的功能,你需要做:
UiApplication.getUiApplication().invokeLater(new Runnable(){
public void run(){
myLabelField.setText("foo");
myLabelField.setDirty(true);
}
});
很容易,是吧?
2.Network 網絡運行應該從不在UI線程內運行。要做這樣的事情:
new Thread(){
public void run(){
HttpConnection hc =
(HttpConnection)Connector.open("http://www.stackoverflow.com");
}
}.start();
這兩個主要原則是非常重要的。您應該始終注意您正在使用哪個線程。
不同之處不在於線程模型,而在於你使用它們的方式和初始文章所說的,你不能使用ui線程進行網絡連接,或者你不能使用網絡連接來更新UI。
在你所謂的桌面Java和黑莓Java之間,這件事有很多不同之處......相信我!
這更多的是與任何平臺相關的通用線程問題,我指的是BlackBerry JVM中線程的具體實現。 – roryf 2008-12-15 10:50:55