5

如果存储在 concurrentHashMap 中,POJO 对象中的可变字段是否是线程安全的?

或者我是否需要用锁来保护字段或使它们易失以确保所有线程都能看到更新?将字段标记为 volatile 是否足以确保所有线程都能看到更新?

4

1 回答 1

13

如果存储在 concurrentHashMap 中,POJO 对象中的可变字段是否是线程安全的?

不,唯一的线程安全是对 hashmap 本身的操作。

或者我是否需要用锁对字段进行 graud 或使它们易失以确保所有线程都能看到更新?

是的,尽管这不一定足够。

将字段标记为 volatile 是否足以确保所有线程都能看到更新?

这取决于字段的类型。对于引用类型,还取决于对象是否可变。


一个忠告:

你不能通过简单的策略来处理线程安全,比如让一切变得易变或同步。您实际上需要了解技术,还需要了解您的应用程序的性质;即并发/多线程将如何发生,以及什么需要是线程安全的。

于 2013-08-03T07:55:59.837 回答