首页 > 解决方案 > 多线程、性能和精度考虑

问题描述

考虑以下类:

public class Money {
    private double amount;

    public Money(double amount) {
        super();
        this.amount = amount;
    }

    public double getAmount() {
        return amount;
    }

    public void setAmount(double amount) {
        this.amount = amount;
    }

    public Money multiplyBy( int factor) {
        this.amount *= factor;
        return this;
    }
}

我可以采取哪些预防措施来确保此类在多线程方面没有任何问题。有良好的表现。同时确保货币精度不会成为问题

标签: javamultithreadingprecisioncurrencymoney-format

解决方案


有几个关键点可以使 POJO(普通旧 Java 对象)线程安全:

  1. 使类不可变。如果添加任何实例变量,请将它们设为 final 或 volatile。

  2. 使您的 getter 和 setter 同步,即

    public synchronized void setAmount(double amount) {}
    

推荐阅读