Дано:
public class TestSeven extends Thread {
private static int x;
public synchronized void doThings() {
int current = x;
current++;
x = current;
}
public void run() {
doThings();
}
}
Какое утверждение верно?
а. Ошибка компиляции.
В. Исключение создается во время выполнения.
С. Синхронизация метода run() сделает класс потокобезопасным.
Д. Данные в переменной "x" защищены от одновременных проблем доступа.
Е. Объявление метода doThings() как static сделает класс потокобезопасным.
F. Обертка операторов в doThings() в синхронизированном (новый объект()) {} блок сделает класс потокобезопасным.
недостаточно ли отмечать doThings() как синхронизированный, чтобы сделать этот класс потокобезопасным? я вижу, что правильный ответ - D, но модельный ответ этого вопроса - E, но я не понимаю, почему?