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

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

方案1:利用putIfAbsent实现

这里写图片描述
特点:多线程安全、能保证key对应value的数据一致性;
缺点:高并发场景下回多次创建新的对象;

方案2:利用Guava Cache实现

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

Java中,如果你想要查看手机配置和功能,通常需要通过模拟硬件环境或访问Android系统的API。因为这涉及到设备级别的操作,对于普通的桌面应用程序来说,你无法直接获取到手机的实际硬件信息,除非你在开发运行在Android平台的应用程序。 以下是一个简单的示例,如果是在Android Studio中编写针对Android的Java应用,你可以使用`TelephonyManager`类来获取一些基本信息: ```java import android.content.Context; import android.telephony.TelephonyManager; public class PhoneInfo { private TelephonyManager telephonyManager; public PhoneInfo(Context context) { telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); } public String getPhoneNumber() { return telephonyManager.getLine1Number(); } public String getDeviceId() { return telephonyManager.getDeviceId(); // 注意这个可能返回null,取决于权限和系统设置 } public boolean isSimInserted() { return telephonyManager.simState != TelephonyManager.SIM_STATE_ABSENT; } public int getSimCount() { return telephonyManager.getSimCount(); } // 更多其他的功能如网络信息等... // 示例结束,实际应用需处理异常并请求相应的权限 } ``` 在这个例子中,我们创建了一个`PhoneInfo`类,通过`TelephonyManager`获取了电话号码、设备ID、SIM卡插入状态和SIM卡数量。注意,并非所有信息都能轻易获取,例如设备ID和部分隐私信息可能受限于用户隐私设置和权限管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值