负载均衡项目
问题:
负载均衡项目项目定时显示有的SAM启动不起来,但是设备重启后就全部都起来的问题
背景:
有一个线程A每3分钟检查维护一次SAM的状态,调用的是ipStatus
另一个线程B(我写的),每隔一段设置时间就对所有的SAM进行重启
页面显示的是线程A维护的状态
分析:
发现,重启时间越短,发生重启失败显示的概率就越大
原因:
写的ipManagers和ipStatus中的数据是一样的,如果ipManagers正在重启,此时线程A将线程将维护的线程显示为未启动成功,
ipManagers和ipStatus使用的类型是HashMap(线程不安全)
解决办法:
将ipManagers和ipStatus使用改为使用同一个,并改为线程安全,使用CurrentHashMap