Многопоточность.Некорректное значение переменной a

введите сюда описание изображения

Создаю 5 потоков,каждый увеличивает переменную на 5 тысяч.В итоге получается некорректный результат. Попробовал синхронизировать потоки,не помогло,почему ?

P.S Я знаю,что можно создать отдельный класс MyInteger с полем int value внутри и создать метод IncrementValue(),но хочу разобраться почему именно этот код не работает корректно.


Ответы (2 шт):

Автор решения: Igor
Solution.a++;

создает новый объект Integer.

→ Ссылка
Автор решения: Олексій Моренець
synchronized (Solution.a.getClass())

Потому что см. предыдущий ответ ))

Я бы советовал создать ОДИН Runnable для всех ваших потоков и синхронизировать его метод run() или же в этом методе run() оставить как у вас секцию synchronized, но синхронизировать ее по this (ну или по классу, как я предложил).

→ Ссылка