说明:如果一个变量是boolean,则此变量是原子性的,即赋值和返回值简单的操作在发生时没有中断的可能。

递增不是原子性炒作。

解决共享资源竞争:

1. 通过加锁,锁语句会产生相互排斥的效果,此种机制也成为互斥量。

通过关键之synchronized 关键字锁也称为监视器。

2. 通过使用显式的Lock对象,通过调用lock()与unlock()方法,其中unlock要在try-finally中的finally

二种方式比较:显示的Lock对象在加锁和释放锁方面,相对于内建的synchronized锁来说,赋予了更细粒度的控制力。而且显示Lock可以处理异常。

但是,建议只有在解决特殊问题时,才使用显示的Lock对象。

Brian的同步规则:

如果你正在写一个变量,他可能接下来将被另一个线程读取,或则正在读取一个上一次已经被另一个线程写过的变量,那么必须使用同步,

并且,读写线程都必须用相同的监视器锁同步。

注意:如果你的类中用超过一个方法处理临界数据,那么你必须同步所有相关的方法。如果只同步一个方法,那么其他方法将会随意护绿这个对象锁,并可以

在无任何惩罚的情况下被调用。这是很重要的一点:每个访问临界共享资源的方法都必须被同步,否则他们就不会正确地工作。

以上:来至于java编程思想

最新文章

  1. Android Material Design之 NavigationView侧滑界面自定义 随笔
  2. mysql general log日志
  3. Android再学习
  4. [Bug]IIs Cannot read configuration file due to insufficient permissions
  5. windows安装django
  6. Memcached 笔记与总结(5)Memcached 的普通哈希分布和一致性哈希分布
  7. SQL左连接、右连接和内连接的简单示例
  8. 类似与fiddler的抓包工具 burp suite free edition
  9. STL—内存的配置与释放
  10. 使用java实现阿里云消息队列简单封装
  11. 百度地图JavaScript API本地搜索的结果面板
  12. 云计算 --> 技术原理
  13. R语言求根
  14. 批量查询"_mget"
  15. docker简单操作
  16. c# 多线程排队队列实现的源码
  17. Sprint会议3
  18. 把XML保存为ANSI编码
  19. Attribute基本介绍
  20. java并发编程(4)性能与可伸缩性

热门文章

  1. CAVLC
  2. WPF 界面布局DockPanel stackPanel WrapPanel 元素内容以及位置控制
  3. [LeetCode#265] Paint House II
  4. 深入浅出Node.js (附录D) - 搭建局域NPM仓库
  5. 关于android屏幕适配
  6. JavaScript高级程序设计6.pdf
  7. C# 调试
  8. windows Nginx基本使用方法
  9. CAS学习笔记(三)—— SERVER登录后用户信息的返回
  10. K倍动态减法游戏