Согласно разделу 6.3.2 JCIP:
Runnable is a fairly limiting abstraction; run can not return a value or throw checked exception.
run()
не может вернуть значение, так как его возвращаемый тип недействителен, но почему он не может генерировать проверенное исключение?