Независимо от того, что происходит внутри runner, сам runner никогда не кидает checked-исключений. Именно это было написано в его декларации.
А метод invoke() также никогда не кидает checked-исключений, так было написано в его декларации.

Я не удивлюсь, если другой компилятор это не скомпилирует.