Java基础之“get-if-absent-compute”

平时开发中经常遇到这样的场景:根据key从map中查询是否有对应的value,若存在则返回,不存在则创建新值返回,要求多线程安全。

方案1:利用putIfAbsent实现

Java基础之“get-if-absent-compute”
特点:多线程安全、能保证key对应value的数据一致性;
缺点:高并发场景下回多次创建新的对象;

方案2:利用Guava Cache实现

特点:多线程安全、能保证key对应value的数据一致性,且能保证对象只被创建一次;
缺点:实现比较重,适用于缓存的场景;