Модель потоков BlackBerry - PullRequest
       20

Модель потоков BlackBerry

10 голосов
/ 10 декабря 2008

Я прочитал много комментариев, мимоходом упомянув, что модель потоков BlackBerry отличается от стандарта Java и может вызывать проблемы, но никакое прибегание к поиску информации не объяснило мне, что именно это означает.

Я разрабатывал довольно крупное бизнес-приложение для BlackBerry и, хотя у меня нет опыта работы с многопоточными приложениями Java, я не сталкивался с проблемой, в которой мы могли бы обвинить на нити, кроме того, что мы сами вызвали.

Может кто-нибудь точно описать, как отличается модель потоков BlackBerry, и как я, как разработчик, должен это учитывать? Очевидно, что любые ссылки на эту тему также будут хороши.

Ответы [ 4 ]

16 голосов
/ 30 апреля 2009

1.UI Операции пользовательского интерфейса всегда должны выполняться в потоке пользовательского интерфейса. Для выполнения таких функций, как LabelField.setText("foo");, вам необходимо:

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

Довольно просто, а?

2.Network Сетевая операция не должна никогда выполняться в потоке пользовательского интерфейса. Для этого нужно:

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

Эти два основных принципа очень важны. Вы всегда должны позаботиться о том, в каком потоке вы работаете.

2 голосов
/ 23 марта 2009

Две причуды, которые я нашел на форумах ежевики:

  1. Вектор не является потокобезопасным.
  2. Если вы создаете собственное приложение CLDC для BlackBerry, статическая переменная не обязательно является одиночной для виртуальной машины.
1 голос
/ 02 апреля 2011

Различия не в модели потоков, а в способе их использования и, как говорилось в первоначальном сообщении, вы не можете использовать поток пользовательского интерфейса для сетевых подключений или использовать сетевое подключение для обновления пользовательского интерфейса. ,

В этом вопросе много различий между тем, что вы называете java для настольных компьютеров и java для ежевики ... поверьте мне!

0 голосов
/ 12 декабря 2008

Единственная проблема, о которой я могу подумать, обсуждается в ответе на еще один вопрос стекопотока .

...