Не могу понять, как обновить мою версию Python с 3.4 до 3.7 в моей виртуальной среде

tl; dr: реализует Runnable лучше. Тем не менее, оговорка важна

. В общем, я бы рекомендовал использовать что-то вроде Runnable, а не Thread, потому что это позволяет вам поддерживать вашу работу только в сочетании с вашим выбором параллелизма. Например, если вы используете Runnable и позже решили, что на самом деле этого не требуется Thread, вы можете просто вызвать threadA.run ().

Предостережение: здесь, Я категорически отвергаю использование необработанных потоков. Я предпочитаю использовать Callables и FutureTasks (Из javadoc: «Адаптивное асинхронное вычисление»). Интеграция тайм-аутов, правильная отмена и объединение потоков современной поддержки параллелизма для меня гораздо более полезны, чем груды необработанных потоков.

Последующие действия: существует конструктор FutureTask , который позволяет использовать Runnables (если это то, что вам больше всего нравится), и по-прежнему пользоваться преимуществами современных инструментов параллелизма. Процитировать javadoc:

Если вам не нужен конкретный результат, подумайте об использовании конструкций формы:

Future f = new FutureTask(runnable, null)

Итак, если мы заменим их runnable на ваш threadA, мы получаем следующее:

new FutureTask(threadA, null)

Другим вариантом, который позволяет вам оставаться ближе к Runnables, является ThreadPoolExecutor . Вы можете использовать метод execute для передачи в Runnable для выполнения «данной задачи в будущем».

Если вы хотите попробовать использовать пул потоков, вышеописанный фрагмент кода будет выглядеть примерно следующим образом (с использованием фабричного метода Executors.newCachedThreadPool () ):

ExecutorService es = Executors.newCachedThreadPool();
es.execute(new ThreadA());

0
задан Cam Weston 28 March 2019 в 18:07
поделиться