两个线程同时操作一个map,怎么保证数据安全?

ghjvbng 2017-08-28 11:18:51
A类中用的是concurrentHashMap,这个对象用来保存一些信息,用户需要时会使用A类中的一些方法查询这个map中的信息,而B类是一个可以理解为守护线程的线程在做清理工作,每个一段时间会拿到A类中的map并清理这个map中满足清理条件的信息,也就是一个查询,一个删除,如何同步,在A类中查询的方法用synchronized修饰,B类中将拿到map作为锁吗?
...全文
3240 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我觉的还要看你的实际代码说话,concurrentHashMap也不是万能的。 在有的情况也的加锁: 比如这个:http://blog.csdn.net/sadfishsc/article/details/42394955
  • 打赏
  • 举报
回复
据我所知,在一个进程内ConcurrentHashMap当某个数据节点操作之前都会使用互斥锁进行保证数据的一致性,所以这方面你不用担心;具体可以查看ConcurrentHashMap源码的1027行与1117行;如果你使用了分布式的话,那就需要利用缓存K/V存储进行锁控制了。
小莫分享 2017-08-28
  • 打赏
  • 举报
回复
查询完,把key写入一个队列,B去拿就好了

25,980

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧