Thread
класс, вы потеряли свой шанс и не можете расширять или наследовать другой класс на Java. Thread
, чем используем интерфейс Runnable
. Интерфейс Runnable
представляет собой Task
, который может быть выполнен либо обычным Thread
, либо Executors
или любые другие средства. Таким образом, логическое разделение Task
как Runnable
, чем Thread
, является хорошим конструктивным решением. Runnable
означает, что мы можем повторно использовать задачу, а также иметь возможность выполнять ее с разных средств. Поскольку вы не можете перезапустить Thread
после его завершения, снова Runnable
vs Thread
для задачи, Runnable
является победителем. Executors
принимает Runnable
] как Task
, и у них есть рабочий поток, который выполняет эту задачу. Thread
- дополнительные накладные расходы только для представления функции Task
, которая может быть легко выполнена с помощью Runnable
. Это прекрасная возможность объединить zip()
, cycle()
и enumerate()
.
cycle()
обеспечит ваше требование «начать заново».
zip()
позволяет вам повторять два списка одновременно.
enumerate()
используется, чтобы решить добавить или вычесть значения.
from itertools import cycle
digits = listOfDigits
values = cycle(listOfValues)
for i, (digit, value) in enumerate(zip(digits, values)):
if i % 2 == 0:
print(digit - value)
else:
print(digit + value)