2008-12-10 72 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之间,这件事有很多不同之处......相信我!