ConcurrentHashMap
key 和 value 哪一个都不能为空
具体解释请参考:https://blog.youkuaiyun.com/gupaoedu_tom/article/details/124450502
1.个人解决方案,将value 为空的去掉,不建议使用下面的解决方案,因为依旧会出现问题。

Collections.synchronizedMap(new HashMap())
不是完全线程安全的,如果多个线程处理put 和 remove 时会出现Null指针异常
该加锁是锁整张表,在单个线程下是可行的,但是如果是多线程处理remove 的话依旧没办法保证线程安全

博客参考:https://blog.youkuaiyun.com/yumolan4325/article/details/79146710
有案例解释

remove 后再get 会报空指针,所以谨慎使用
本文深入探讨了ConcurrentHashMap在Java中的使用,强调了key和value都不能为null的重要规则。博客指出,虽然Collections.synchronizedMap(new HashMap())在单线程环境下可能看似线程安全,但在多线程的put和remove操作中仍可能导致NullPointerException。文章通过实例解释了为何在并发环境中不应依赖此方法,并警告了remove后再get操作可能遇到的空指针问题。建议开发者遵循最佳实践,确保在多线程环境下使用完全线程安全的数据结构。
2113

被折叠的 条评论
为什么被折叠?



