Потому что они не создали его таким образом. С ясной точки зрения это имеет смысл для меня. Thread представляет поток выполнения, а не задачу. Когда эта последовательность выполнения завершена, она выполнила свою работу, и она просто замалчивала все, чтобы она начиналась сверху.
С другой стороны, Runnable представляет задачу и может быть передана многим Потоки столько раз, сколько хотите.
withNoRetries()
просто запрещает повторы. Если операция завершилась неудачно, вы получите исключение. Это сравнивается с поведением по умолчанию, когда операция будет повторена до тех пор, пока это не станет возможным.
Подробнее о ограничениях ATOMIC и IEP-12 в документах. Обратите внимание, что обычно это возможно только в том случае, если сразу несколько кластеров покидают кластер.