Как реализовать тайм-аут потока в J2ME? - PullRequest
3 голосов
/ 07 мая 2010

Я использую Connector в J2ME и обнаружил, что иногда отправка запроса иногда занимает очень много времени, а иногда это может остановить весь процесс.и попытайтесь установить время ожидания для потока.Но я обнаружил, что это очень сложно сделать в J2ME, потому что в J2ME нет join(timeout).
Есть ли способ сделать это?Или какой-нибудь лучший способ справиться с сетевым подключением в J2ME?
Заранее большое спасибо.

1 Ответ

4 голосов
/ 07 мая 2010

Вы должны использовать комбинацию из 3 механизмов:

  • Connector.open() можно использовать с третьим параметром для тайм-аута.
  • Вы можете вызвать Thread.sleep() и Connection.close()из потока, отличного от того, который вы называете Connector.open() in.
  • Вы можете позвонить Thread.sleep() и Thread.interrupt() из потока, отличного от того, который вы называете Connector.open() in.

В некоторых плохо реализованных средах выполнения MIDP Connection.close() может блокироваться, если соединение занято.Вам необходимо тщательно проверить это на трубках, которые вы планируете поддерживать.

Thread.interrupt() может оставить среду выполнения MIDP (и основную операционную систему трубки) с потерянными ресурсами, поэтому используйте его только в качестве крайней меры.

...