Вопрос проверяет умение проектировать потокобезопасный доступ к финансовым данным.
Используйте:
AtomicLong для простых случаев.
ReadWriteLock для частого чтения и редкой записи.
Транзакции в БД для сложных операций.
1. AtomicLong:
ConcurrentHashMap<Long, AtomicLong> balances = new ConcurrentHashMap<>();
balances.computeIfAbsent(userId, k -> new AtomicLong(0)).addAndGet(amount);2. ReadWriteLock:
ReadWriteLock lock = new ReentrantReadWriteLock();
lock.writeLock().lock();
try {
// Изменение баланса
} finally {
lock.writeLock().unlock();
}