多个线程有使用到的共享变量;如果只是读,我们可以利用读写锁进行处理。但是如果有涉及到初始化的过程,我们需要保证初始化的过程是原子性的。
举一个例子,我们使用ConcurrentHashMap<String,Object>来存储键值对共享数据,读数据我们可以直接读取,因为ConcurrentHashMap是线程安全的。存数据其实也是安全的,但是我们有涉及到初始化,当Map中不存在该键值的数据时,我们会构造数据,然后进行初始化,这一步需要进行加锁。
java 并发竞争条件理解
最新推荐文章于 2022-12-21 09:06:50 发布