Измените свой метод с этого:
public void addPrice(long price) {
// ...
}
на этот:
public synchronized void addPrice(long price) {
// ...
}
При назначении метода как sychronized
, JVM не позволит более одного потока одновременно для выполнения этого метода.
Существуют и другие способы написания потокобезопасного кода, но если и до тех пор, пока у вас нет конкретной причины c, чтобы использовать их, используйте синхронизированный класс - это здорово просто, правильно и легко понять / рассуждать о.