2008-12-10 77 views
10

我已經閱讀了很多評論,順便提一下,黑莓線程模型偏離了Java標準,可能會導致問題,但沒有任何數量的谷歌搜索啓發我這意味着什麼。黑莓線程模型

我一直在爲BlackBerry開發一個相當大的業務應用程序,儘管我沒有任何以前的Java多線程應用程序的經驗,但還沒有遇到任何我們已經能夠除了我們自己造成的外,我們不得不責怪線程。

有人可以確切描述BlackBerry線程模型是如何不同的,以及我作爲開發人員應如何考慮?顯然這個話題的任何鏈接也會很棒。

回答

0

我能想到的唯一問題在another stackoverflow question的答案中討論。

+0

這更多的是與任何平臺相關的通用線程問題,我指的是BlackBerry JVM中線程的具體實現。 – roryf 2008-12-15 10:50:55

2

兩個怪癖我在黑莓論壇上發現:

  1. 矢量不是線程安全的。
  2. 如果您要創建本機黑莓CLDC應用程序,則靜態不一定是虛擬機上的單例。
16

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(); 

這兩個主要原則是非常重要的。您應該始終注意您正在使用哪個線程。

1

不同之處不在於線程模型,而在於你使用它們的方式和初始文章所說的,你不能使用ui線程進行網絡連接,或者你不能使用網絡連接來更新UI。

在你所謂的桌面Java和黑莓Java之間,這件事有很多不同之處......相信我!