共享受限资源,Brian的同步规则
2024-09-23 14:00:44
说明:如果一个变量是boolean,则此变量是原子性的,即赋值和返回值简单的操作在发生时没有中断的可能。
递增不是原子性炒作。
解决共享资源竞争:
1. 通过加锁,锁语句会产生相互排斥的效果,此种机制也成为互斥量。
通过关键之synchronized 关键字锁也称为监视器。
2. 通过使用显式的Lock对象,通过调用lock()与unlock()方法,其中unlock要在try-finally中的finally
二种方式比较:显示的Lock对象在加锁和释放锁方面,相对于内建的synchronized锁来说,赋予了更细粒度的控制力。而且显示Lock可以处理异常。
但是,建议只有在解决特殊问题时,才使用显示的Lock对象。
Brian的同步规则:
如果你正在写一个变量,他可能接下来将被另一个线程读取,或则正在读取一个上一次已经被另一个线程写过的变量,那么必须使用同步,
并且,读写线程都必须用相同的监视器锁同步。
注意:如果你的类中用超过一个方法处理临界数据,那么你必须同步所有相关的方法。如果只同步一个方法,那么其他方法将会随意护绿这个对象锁,并可以
在无任何惩罚的情况下被调用。这是很重要的一点:每个访问临界共享资源的方法都必须被同步,否则他们就不会正确地工作。
以上:来至于java编程思想
最新文章
- Android Material Design之 NavigationView侧滑界面自定义 随笔
- mysql general log日志
- Android再学习
- [Bug]IIs Cannot read configuration file due to insufficient permissions
- windows安装django
- Memcached 笔记与总结(5)Memcached 的普通哈希分布和一致性哈希分布
- SQL左连接、右连接和内连接的简单示例
- 类似与fiddler的抓包工具 burp suite free edition
- STL—内存的配置与释放
- 使用java实现阿里云消息队列简单封装
- 百度地图JavaScript API本地搜索的结果面板
- 云计算 -->; 技术原理
- R语言求根
- 批量查询";_mget";
- docker简单操作
- c# 多线程排队队列实现的源码
- Sprint会议3
- 把XML保存为ANSI编码
- Attribute基本介绍
- java并发编程(4)性能与可伸缩性