Runnable
представляет код, который будет выполняться.
Executor
и его подклассы представляют собой стратегии выполнения.
Это означает, что первый из них фактически потребляется более поздним. Что вы, вероятно, имели в виду: между простыми нитями и исполнителями, которые более подходят?
Ответ на этот вопрос в основном: это зависит.
Executor
s - это сложные инструменты, которые позволяют вам выбирать, сколько одновременных задач может выполняться, и настраивать различные аспекты контекста выполнения. Они также предоставляют средства для контроля за выполнением заданий, возвращая токен (называемый Future
или иногда обещанием), которые позволяют коду, запрашивающему выполнение задачи, запрашивать завершение этой задачи.
Нитки менее сложные (или более простые) решения для выполнения кода асинхронно. Вы все равно можете вернуть их Future
вручную или просто проверить, работает ли поток.
Возможно, в зависимости от сложности, которую вы требуете, вы будете выбирать один или другой: Executor
s для более упорядоченных требований (многие задачи для выполнения и мониторинга), потоки для одного снимка или более простые ситуации.
Это зависит от того, какие темы вам нужны для запуска, можете ли вы дать нам некоторые особенности? – ddmps
Я использую библиотеку Cling UPNP и хочу получать информацию от нее, не блокируя пользовательский интерфейс, поскольку он часто кажется, что он получает результаты только через некоторое время. – Cooltrooper