gpt4 book ai didi

java - ehcache putAll 操作线程安全和原子化吗?

转载 作者:行者123 更新时间:2023-11-30 08:34:02 25 4
gpt4 key购买 nike

文档说 ehcache 是线程安全的。据我所知,如果 thread A 更新缓存,这些更新将始终对其他线程可见。

但我想知道 putAll 操作是否是线程安全的和原子的?比如说,我想通过调用 putAll 并传递具有实际值的 Map 来更新我的缓存。比如说,我想在更新缓存时从缓存中获取一些值。我会收到旧值还是等到缓存更新后收到新值?

最佳答案

当操作只能完全执行或根本不执行时,该操作是原子操作。根据Interface Ehcache putAll 操作不是原子的。

This method will throw a NullPointerException if a null element or null key is encountered in the collection, and a partial completion may result (as only some of the elements may have been put).

关于ehcache 是否线程安全。 Ehcache 被特别设计成线程安全的。以 Cache 为例实现。

Cache is threadsafe.

但要注意线程安全并不意味着同步。那有什么区别呢?

线程安全意味着一个类可以在多个线程中使用而不会出现任何错误或问题。

同步意味着一个或多个方法只能同时从一个线程使用。

putAll 的情况下意味着什么,让我们说一个 get 调用。这两种方法都是线程安全的,但它们不是同步的。

因此您无法确定线程 A 是否调用了 putAll 并且线程 B 调用了 get 之后 putAll 是否在 之前执行>得到

关于java - ehcache putAll 操作线程安全和原子化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39107727/

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