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

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

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

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

10.12.2008 14:42:42
4 ОТВЕТА

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

0
23.05.2017 11:55:45
Это больше общая проблема потоков, которая имеет отношение к любой платформе, я имею в виду конкретную реализацию потоков в JVM BlackBerry.
roryf 15.12.2008 10:50:55

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

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

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

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

Довольно легко, а?

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

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

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

16
17.03.2010 12:49:05

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

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

1
2.04.2011 16:47:21