2013-04-12 2 views
4

Это проще и удобнее использовать для работы в другом потоке, особенно для того, чтобы программа ожидала результата, но не блокировала ui.Runnable or Executor Service

Возможно, существует метод, который лучше, чем любой из них, но я не знаю о них.

Спасибо :)

+0

Это зависит от того, какие темы вам нужны для запуска, можете ли вы дать нам некоторые особенности? – ddmps

+0

Я использую библиотеку Cling UPNP и хочу получать информацию от нее, не блокируя пользовательский интерфейс, поскольку он часто кажется, что он получает результаты только через некоторое время. – Cooltrooper

ответ

10
  • Runnable представляет код, который будет выполняться.
  • Executor и его подклассы представляют собой стратегии выполнения.

Это означает, что первый из них фактически потребляется более поздним. Что вы, вероятно, имели в виду: между простыми нитями и исполнителями, которые более подходят?

Ответ на этот вопрос в основном: это зависит.

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

Нитки менее сложные (или более простые) решения для выполнения кода асинхронно. Вы все равно можете вернуть их Future вручную или просто проверить, работает ли поток.

Возможно, в зависимости от сложности, которую вы требуете, вы будете выбирать один или другой: Executor s для более упорядоченных требований (многие задачи для выполнения и мониторинга), потоки для одного снимка или более простые ситуации.

+0

Это хороший способ взглянуть на разницу, спасибо :) – Cooltrooper

+0

. ..пожалуйста :) – didierc

Смежные вопросы