I am making an application that takes a bunch of journal entries and calculate sum.

Is below way of doing it is thread/concurrency safe when there are **multiple threads** calling the `addToSum()` method. I want to ensure that each call updates the total properly.

If it is not safe, please explain what do I have to do to ensure thread safety.

Do I need to `synchronize` the get/put or is there a better way?

```
private ConcurrentHashMap<String, BigDecimal> sumByAccount;

public void addToSum(String account, BigDecimal amount){
    BigDecimal newSum = sumByAccount.get(account).add(amount);
    sumByAccount.put(account, newSum);
}

```

Thanks so much!

**Update:**

Thanks everyone for the answer, I already get that the code above is **not thread-safe**.

Thanks Vint for suggesting the `AtomicReference` as an alternative to `synchronize`. I was using `AtomicInteger` to hold integer sums before and I was wondering if there are something like that for BigDecimal.

Is the a definitive conclusion on the pro and con of the two?