我已经阅读了很多评论,顺便提一下,黑莓线程模型偏离了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