Лучший способ убить поток JavaME 1.2?

Вопрос: Мне интересно узнать лучшие практики для уничтожения длительной операции, которая выполняется в качестве фонового потока (давайте назовем этот потокWorkerThread) в Java 1.2.

сценарий

В частности, я разрабатываю приложение для устройств Blackberry, с помощью которого я устанавливаю HTTP-соединение. Большая картинка: запрос URL, если он перенаправлен в фоновый поток (WorkerThread), поток делает запрос и возвращает результат, используя обратный вызов.

Подробности сценария

Теперь существует ситуация, когда во время соединения существует соединение для передачи данных.но потом по какой-либо причине (проезжает через туннель) это соединение больше не существует. Из-за ограничений в архитектуре проектирования Blackberry это фактическое соединение будет зависать, так как время ожидания установлено равным 2 минутам. В результате крайне необходимо уничтожить соединение, которое зависало в течение относительно (15 секунд) длительного периода времени.

Мое текущее решение - 2 Theads?

Сейчас мое текущее решение - запуститьWorkerThread внутри другого потока (давайте вызовем этот новый потокMonitorThead).MonitorThread начинаетсяWorkerThread, спит в течение 1000 мс, а затем регулярно проверяет, еслиWorkerThread все еже жив. Если через 15 секунд WorkerThread все еще активен, MonitorThread переводит WorkerThread в спящий режим и завершает работу. Это действительно лучший подход?

Резюме вопросов и ключевых моментов

Таким образом, ниже приведен основной вопрос и основные ограничения, связанные с этим вопросом. Ура!

Как мне успешно убить фоновый поток Java, который застрял в определенной операции?

Сценарий Ограничения:Нет контроля над тем, чтобы операция приостановилась и проверила состояние запрошенных потоков.Специфично для реализации Blackberry Java ME 1.2 и егоAPI потока так что нет явногоубийство() методБольше всего беспокоит передовая практика и как наиболее безопасно убить удерживающую нить.

Follow Up / Редактировать
Нил Коффи рекомендовал, чтобы я просто держал ссылку на объект подключения и вместо этого вызывалблизко() на этом объекте. Я сейчас смотрю на это ...

Ответы на вопрос(3)

Ваш ответ на вопрос