Was sind gemäß der Frage die spezifischen Geschäftsnutzungsszenarien von Hochleistungsklassen wie ConcurrentHashMap?
HashMap wird normalerweise am häufigsten verwendet, wenn wir Code schreiben, und wir sind daran gewöhnt
Aber es gibt andere leistungsstarke Karten in Java, und ich habe das Gefühl, dass ich sie normalerweise nicht verwende
Nachdem ich auf Baidu gesucht habe, habe ich nur den Unterschied zwischen HashMap und ConcurrentHashMap gesehen
Aber ich weiß nicht, in welchen spezifischen Geschäftsnutzungsszenarien diese Klassen verwendet werden
Daher bin ich etwas verwirrt. Ich hoffe, die Senioren können mir einen Rat geben, danke
ConcurrentHashMap是java.util.concurrent包下防止并发的工具类。业务使用时自己的并发类实现ThreadLocal也行。。。
主要用在多线程中,Java早些版本是使用synchronized同步块的方式,加锁释放等不易解决问题。而现在Java官方全都写好了,看看多线程就知道了。。。
业务场景就比如说公司的人员信息用多线程的方式入库,如果使用java.util.List就会有造成每个线程数据不一致的现象,这时就要用并发工具类了。主要注意
写
数据时,读数据就无所谓了。。。ConcurrentHashMap 专门是给多个线程访问的。举个例子:
当有很多用户同时登入和登出时,
onUserSignIn()
和onUserSignOut()
就会有很多线程同时调用。谢邀。
你得先知道:
在多线程对一个没有保护的对象执行操作会导致大家看到的状态不一致。
你可以开几个线程对一个普通的hashMap去put,remove,前提是在一定条件下,比如里面元素符合一定要求,大于小于等于某个数之类的。
ConcurrentHashMap
是jdk的并发包中提供的并发map,可以有效防止多线程操作一个对象时出现对象副本不一致。场景的话百度可以搜一下。
区别就不用说了.这些你应该都已经了解了.
为了保证线程安全,我们一般都是用Synchronize关键字,有了ConcurrentHashMap后,你可以不用再使用笨重的Synchronize方法了. 另外ConcurrentHashMap在多线程的情况下,也是一般用在读多写少的情况.不是所有的多线程都可以使用这个并发工具类的.