多线程运行同步锁synchronize的一些实战心得
来源:互联网 发布:淘宝商品批量上传 编辑:程序博客网 时间:2024/05/21 08:51
同步锁的应用本质:牺牲程序执行性能而换取数据的安全变动。
原则:如果在实际开发中,在使用同步锁之前,必须先了解你要调用的同步对象,内部是否已经实现了同步,如果实现了同步,则无需加锁,否则就要加锁。
1.内部方法已经实现同步,无需加锁的例子:
Message message = Message.obtain(handler);@Overridepublic void run(){ handler.sendMessage(message);}
在Android开发中,因为Message类的obtain方法和Handler类的sendMessage方法,通过跟踪内部源代码,发现其最终都是实现了同步锁synchronize,这样就可以直接在多线程运行的run方法中使用,而无需再加同步锁减低性能。
2.内部方法未实现或者未知是否实现同步,必须加锁的例子:
int count = 0;SmsManager smsManager = msManager.getDefault();@Overridepublic void run(){ synchronized (smsManager) { for (int i = 0;i<= 10;i++); { smsManager.sendTextMessage("电话号码",null,count++,null,null; } }}
对于数据的变换的代码块中必须加锁,即是count++的运算,而且锁的同步对象为调用方法的主体smsManager。
提醒:在实际开发如果不确定是否加锁操作,参考以上原则使用,基本上可以满足大部分要求,如果出现特殊情况,必须要进行再修正。
0 0
- 多线程运行同步锁synchronize的一些实战心得
- Delphi中多线程同步过程Synchronize的一些说明
- 多线程同步---synchronize
- java的同步机制synchronize
- 关于synchronize同步的理解
- Chapter 2 验证synchronize同步函数时加的锁
- java多线程和synchronize锁
- Delphi Dll中多线程无法使用Synchronize同步的解决方法(转)
- Delphi Dll中多线程无法使用Synchronize同步的解决方法(转)
- 【心得】并发(synchronize)和并行的区别
- 菜单与工具条的同步 APP_STANDARD.SYNCHRONIZE
- Delphi中多线程用Synchronize实现VCL数据同步显示
- Delphi中多线程用Synchronize实现VCL数据同步显示
- Delphi中多线程用Synchronize实现VCL数据同步显示
- Java中synchronize 与lock实现多线程同步
- 【JavaSE学习笔记】多线程01_Thread,Runnable,synchronize同步机制
- Delphi中多线程中Synchronize的运用
- 关于PowerBuilder多线程的一些心得
- MongoDB Sharding集群部署
- C#配置文件加密
- UML建模——使用EA工具开发时序图实践及经验
- 20150317 实习之——余世维视频(上)
- 可变参数列表函数实现
- 多线程运行同步锁synchronize的一些实战心得
- d3,颜色插值
- 计算二进制的1的个数
- 程序中各种变量的存储位置和程序返回变量的问题
- Objective-C基础学习笔记(四)-面向对象的三大特性之继承
- poj3420
- 关于java开发,JDK的环境配置的简单叙述
- 汇编语言,代码解释【初学者】
- LeetCode 69.Sqrt(x)