RIL.java【2】

本文详细介绍了Java中的同步机制,包括同步方法和同步语句块的概念及其应用方式。此外还对比了String、StringBuffer与StringBuilder的区别,并简要说明了内存池的优化原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.

synchronized
(sPoolSync
) {

------------------------------------------------------
Java 的同步机制:
Java的同步分同步方法和同步语句块,无论何种同步,其加锁的对象都是一个对象。

同步方法:
其加锁对象是该方法所属的类的实例,和
synchronized (this)具有同样的效果,例如类A有两个对象a1和a2,其中有一个同步方法func1:

class A{
synchronized void func1(){
dosomething...
}
}

A a1,a2;

当线程1中调用a1访问方法func1时,线程2中调用a1访问方法func1将会被阻塞,而如果在线程2中调用a2来访问func1则不会阻塞。

同步语句块:
void func()
{
private byte[] lock = new byte[0];
synchronized (lock){
dosomething
}
}
同步语句块的作用是只有在拿到了该同步锁后才能执行其语句块。

2.
static RILRequest obtain (int request , Message result ) {
----------------------------------------------------------------------------------
通常在需要高效率处理的地方我们可以使用内存池来优化我们的程序,其中最常用的方法就是使用链表是内存池,每次需要创建对象时,首先从
已经分配的对象链表中查找,如果有空闲的对象,则直接返回该对象,如果没有则创建一个新的对象,并将该对象加入到内存池链表中,同时
在程序使用完该对象时应释放该对象回内存池供下次使用。

3.
StringBuilder sb = new StringBuilder (8 );
---------------------------------------------------------
String,StringBuffer,StringBuilder的区别:
String是一个不可变对象,在对String对象进行修改时实际上相当于重新创建了一个String对象,因此对于经常变化的字符串最好不要使用
String来操作。
StringBuffer是一个可变的对象,在对其字符串修改时是直接修改其内容,不会创建新的对象,因此大部分情况下我们应该使用StringBuffer,
同时StringBuffer是线程安全的。
StringBuilder与StringBuffer类似,但不是线程安全的,只是其速度快些,所以如果能确保只有一个线程使用的,字符串又需要经常修改的
话最好用StringBuilder.

06-30 10:41:19.722 1530 1530 D RILJ : RIL: init allowedNetworkTypes=392191 cdmaSubscription=0) [PHONEnull] 06-30 10:41:19.815 1530 1530 E RILJ : IRadio <1.4 is no longer supported. [PHONE0] 06-30 10:41:19.820 1530 1530 E RILJ : getRadioServiceProxy: set MODEM for slot1 as disabled 06-30 10:41:19.820 1530 1530 E RILJ : java.lang.RuntimeException 06-30 10:41:19.820 1530 1530 E RILJ : at com.android.internal.telephony.RIL.getRadioServiceProxy(RIL.java:1052) 06-30 10:41:19.820 1530 1530 E RILJ : at com.android.internal.telephony.RIL.getRadioServiceProxy(RIL.java:791) 06-30 10:41:19.820 1530 1530 E RILJ : at com.android.internal.telephony.RIL.getHardwareConfig(RIL.java:4186) 06-30 10:41:19.820 1530 1530 E RILJ : at com.android.internal.telephony.TelephonyDevController.registerRIL(TelephonyDevController.java:108) 06-30 10:41:19.820 1530 1530 E RILJ : at com.android.internal.telephony.RIL.<init>(RIL.java:1214) 06-30 10:41:19.820 1530 1530 E RILJ : at com.android.internal.telephony.RIL.<init>(RIL.java:1108) 06-30 10:41:19.820 1530 1530 E RILJ : at com.android.internal.telephony.PhoneFactory.makeDefaultPhone(PhoneFactory.java:190) 06-30 10:41:19.820 1530 1530 E RILJ : at com.android.internal.telephony.PhoneFactory.makeDefaultPhones(PhoneFactory.java:120) 06-30 10:41:19.820 1530 1530 E RILJ : at com.android.phone.PhoneGlobals.onCreate(PhoneGlobals.java:560) 06-30 10:41:19.820 1530 1530 E RILJ : at com.android.phone.PhoneApp.onCreate(PhoneApp.java:39) 06-30 10:41:19.820 1530 1530 E RILJ : at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1386) 06-30 10:41:19.820 1530 1530 E RILJ : at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1491) 06-30 10:41:19.820 1530 1530 E RILJ : at android.app.LoadedApk.makeApplicationInner(LoadedApk.java:1403) 06-30 10:41:19.820 1530 1530 E RILJ : at android.app.ActivityThread.handleReceiver(ActivityThread.java:4805) 06-30 10:41:19.820 1530 1530 E RILJ : at android.app.ActivityThread.-$$Nest$mhandleReceiver(Unknown Source:0) 06-30 10:41:19.820 1530 1530 E RILJ : at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2506) 06-30 10:41:19.820 1530 1530 E RILJ : at android.os.Handler.dispatchMessage(Handler.java:116) 06-30 10:41:19.820 1530 1530 E RILJ : at android.os.Looper.loopOnce(Looper.java:235) 06-30 10:41:19.820 1530 1530 E RILJ : at android.os.Looper.loop(Looper.java:323) 06-30 10:41:19.820 1530 1530 E RILJ : at android.app.ActivityThread.main(ActivityThread.java:8805) 06-30 10:41:19.820 1530 1530 E RILJ : at java.lang.reflect.Method.invoke(Native Method) 06-30 10:41:19.820 1530 1530 E RILJ : at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580) 06-30 10:41:19.820 1530 1530 E RILJ : at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
07-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值