Почему переменные, передаваемые в runnable, должны быть окончательными?

Если у меня есть переменнаяint x = 1скажем, и я объявляю работоспособный объект в главном потоке, и я хочу передать x исполняемому объектуrun() метод, он должен быть объявленfinal, Зачем?

final int x = 0;//<----must be final...
private class myRun implements Runnable {

    @Override
    public void run() {
        x++;//
    }

}

Ответы на вопрос(3)

Ваш ответ на вопрос