Не само по себе нет.Но если вы выполняете операцию, которая включает в себя потокобезопасный класс, такой как AtomicInteger
и другие переменные (даже если они другие AtomicIntegers
), вам может понадобиться.
AtomicInteger
гарантирует, чтооперации над ним поточнобезопасны и атомарны без необходимости что-либо делать.Но допустим, что вы увеличиваете одно и уменьшаете другое, и их сумма всегда должна быть одинаковой.У вас есть 2 атомарных операции, но чтобы объединить их в одну атомарную операцию, вам потребуется дополнительная синхронизация.Только тогда вы можете быть уверены, что другие потоки будут считывать постоянную сумму этих переменных.
Я по-прежнему был бы осторожен, комбинируя ручную синхронизацию с классами java.util.concurrent
, так как, скорее всего, есть более чистое решение, обеспечиваемоеодновременные занятия.