Многопоточность или шаблон наблюдателя при ожидании поиска DNS? - PullRequest
0 голосов
/ 24 сентября 2010

Я разрабатываю систему в Java, которая использует класс поиска DNS.

Мой вопрос: при вызове класса dnsLookup () делать это в новом потоке или использовать шаблон наблюдателя, и пусть класс dns сообщит мне, когда это будет сделано.Это не проблема, если поиск возвращает значение практически мгновенно, но когда это занимает несколько секунд (когда он не получает ответа), я не хочу останавливать графический интерфейс во время ожидания.

Итак, новая тема или наблюдатель.Также оцените хорошие ссылки на темы.

Заранее спасибо - Деннис

Ответы [ 3 ]

3 голосов
/ 24 сентября 2010

Вам придется использовать как шаблон наблюдателя, так и несколько потоков. Нет способа, чтобы DNS вызывал метод обратного вызова в том же потоке.

0 голосов
/ 24 сентября 2010

Поскольку вызов выполняется с помощью графического интерфейса пользователя, я думаю, лучше выгрузить вызов в другую строку.На самом деле вы хотите убедиться, что вы не используете AWT-Thread для вызова, который блокирует обновление графического интерфейса.Я бы предложил использовать что-то вроде ExecutorService для выполнения ваших команд, а затем при возврате используйте SwingUtilities и вызовите метод invokeLater(Runnable doRun) для обновления графического интерфейса с ответом.

0 голосов
/ 24 сентября 2010

Ваш графический интерфейс является системой драйверов событий, поэтому асинхронные уведомления хороши.

С другой стороны, намного проще выполнять сетевой ввод-вывод (особенно, если это всего лишь один поиск DNS), если вы используете синхронные (блокирующие) сетевые вызовы.

Следовательно, я бы предпочел перейти к отдельному параметру потока, но затем этот поток уведомил бы основной поток GUI, когда это будет сделано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...