在和蔼可亲的豆购物车中使用同步方法

时间:2012-03-27 06:05:28

标签: java java-ee netbeans synchronized

看看netbeans和蔼可亲的bean教程。为什么我们需要在这里使用同步方法?

public synchronized int getNumberOfItems() {

        numberOfItems = 0;

        for (ShoppingCartItem scItem : items) {

            numberOfItems += scItem.getQuantity();
        }

        return numberOfItems;
    }


    public synchronized double getSubtotal() {

        double amount = 0;

        for (ShoppingCartItem scItem : items) {

            Product product = (Product) scItem.getProduct();
            amount += (scItem.getQuantity() * product.getPrice().doubleValue());
        }

        return amount;
    }

2 个答案:

答案 0 :(得分:2)

看起来每个与ShoppingCartItems管理相关的方法都是同步的。当然要阻止项目列表中的并发访问(List<ShoppingCartItem> items;)。

如果没有同步,你可以让1+线程访问“读取”方法,例如getSubtotal (),而items列表正由另一个线程通过公共synchronized void addItem(Product product)更新。

可以找到来源here

答案 1 :(得分:0)

可能是因为您可以使用两个不同的窗口购物并且必须正确更新购物车,因此所有相关方法都标记为synchronized