gpt4 book ai didi

java - CopyOnWriteArrayList 是否足以在 Servlet Session 范围内保持购物车线程安全

转载 作者:行者123 更新时间:2023-12-01 13:36:10 25 4
gpt4 key购买 nike

CopyOnWriteArrayList列出足以用作购物车集合的列表。据我了解,它是线程安全的,并且保证迭代器在迭代期间另一个线程删除产品时不会抛出 ConcurrentModificationException 。例如:

    ...
CopyOnWriteArrayList<Product> products = (CopyOnWriteArrayList<Product>)session.getAttribute("PRODUCTS");
products.addIfAbsent(aProduct);
...

附注我发现使用同步( session ){...}的同步方法,但是当我使用 this 中提供的购物车时,当我需要在任何地方同步 session 访问时,它看起来有点难看。文章

最佳答案

您需要了解什么CopyOnWriteArrayList提供。

它为您提供快照,但不会为您提供后端阵列的实时 View 。

它削弱了合约的可见性,它说你不会得到 ConcurrentModificationException但也说,如果其他线程删除某些元素,则该效果对于可能正在迭代的其他线程来说将不可见,因为在添加或删除时,原始数组不会被改变或触及,并且在每个改变该元素的操作上都会创建一个新的数组。支持数组。

Is CopyOnWriteArrayList list enough to use as a collection for shopping-cart.

视情况而定。

如果这种行为在您的场景中是可以接受的,那么您可以使用它,但如果您想要可见性保证,您可能必须使用显式锁定。

关于java - CopyOnWriteArrayList 是否足以在 Servlet Session 范围内保持购物车线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21254264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com