TogetherOS / cicada

🚀 Fast lightweight HTTP service framework.
https://crossoverjie.top/categories/cicada/
Apache License 2.0
953 stars 212 forks source link

IOC容器中,把HashMap改为了ConcurrentHashMap #49

Closed windbelike closed 4 years ago

windbelike commented 4 years ago

HashMap是线程不安全的,在Web容器高并发环境下会产生线程安全问题,因此把HashMap改为了ConcurrentHashMap。

crossoverJie commented 4 years ago

HashMap是线程不安全的,在Web容器高并发环境下会产生线程安全问题

这句话同意,不过任何方案都得看场景。

cicada 这里只可能出现注册 bean 的时候出现并发,但目前是初始化时单线程注册的,所以不会存在线程安全问题。

https://github.com/TogetherOS/cicada/blob/eb541a121c838dc4e37fd6b8e5450bc183618286/cicada-core/src/main/java/top/crossoverjie/cicada/server/bean/CicadaBeanManager.java#L53

不过考虑到后续支持 bean 懒加载的场景,可以直接改成 ConcurrentHashMap.