Я предполагаю, что ваш метод обновления или весь класс аннотирован с помощью Transactional или обернут транзакционным прокси другим способом. Это означает, что всякий раз, когда вы вызываете метод dao, транзакционный прокси-сервер получает соединение из базы данных из пула, открывает транзакцию и затем вызывает реальный метод.
В вашем первом сценарии вы выполняете синхронизацию, даже не достигнув прокси-сервера, поэтому не происходит никакой магии соединения и транзакции. Во втором сценарии вы делаете ожидающий вызов после этого.
Если есть несколько потоков, пытающихся выполнить одновременные обновления, будет только один, выполняющий обновление, а остальные будут сначала открывать новые подключения, а затем ожидать даосского доступа. Как следствие, вместо постоянного повторного использования одного соединения вы будете использовать несколько соединений. Я могу только догадываться, как это действительно влияет на производительность, но вы можете поэкспериментировать с другим размером пула, начиная с одного.