Java 黑莓线程模型

Java 黑莓线程模型,java,multithreading,blackberry,java-me,Java,Multithreading,Blackberry,Java Me,我已经阅读了很多评论,其中顺便提到黑莓线程模型偏离了Java标准,可能会引起问题,但谷歌搜索并没有告诉我这到底意味着什么 我一直在为BlackBerry开发一个相当大的商业应用程序,尽管我以前没有Java多线程应用程序的经验,但除了我们自己造成的问题外,我没有遇到任何我们可以归咎于线程的问题 有人能确切地描述一下黑莓线程模型的不同之处吗?作为一名开发人员,我应该如何考虑这一点?显然,关于这个主题的任何链接都会很好。我能想到的唯一问题是在对的回答中进行了讨论。我在黑莓论坛上发现了两个怪癖: Vec

我已经阅读了很多评论,其中顺便提到黑莓线程模型偏离了Java标准,可能会引起问题,但谷歌搜索并没有告诉我这到底意味着什么

我一直在为BlackBerry开发一个相当大的商业应用程序,尽管我以前没有Java多线程应用程序的经验,但除了我们自己造成的问题外,我没有遇到任何我们可以归咎于线程的问题


有人能确切地描述一下黑莓线程模型的不同之处吗?作为一名开发人员,我应该如何考虑这一点?显然,关于这个主题的任何链接都会很好。

我能想到的唯一问题是在对的回答中进行了讨论。

我在黑莓论坛上发现了两个怪癖:

  • Vector不是线程安全的
  • 如果您正在创建本机blackberry CLDC应用程序,则静态应用程序不一定是虚拟机上的单例应用程序 1.UI 用户界面操作总是需要在UI线程中运行。执行诸如
    LabelField.setText(“foo”)之类的函数您需要执行以下操作:

    UiApplication.getUiApplication().invokeLater(new Runnable(){
      public void run(){
        myLabelField.setText("foo");
        myLabelField.setDirty(true);
      }
    });
    
    很简单吧

    2.网络 网络操作不应在UI线程中运行。要做这样的事情:

    new Thread(){
      public void run(){
        HttpConnection hc = 
                (HttpConnection)Connector.open("http://www.stackoverflow.com");
      }
    }.start();
    

    这两个主要原则非常重要。您应该始终注意在哪个线程中操作。

    区别不在于线程模型,而在于使用它们的方式。正如最初的帖子所说,您不能使用ui线程进行网络连接,也不能使用网络连接更新ui


    在这个问题上,你所谓的桌面java和黑莓java之间有很多不同。。。相信我

    这更像是一个与任何平台相关的通用线程问题,我指的是BlackBerry JVM中线程的具体实现。