Android 面试题四
来源:互联网 发布:广告投放算法好吃 编辑:程序博客网 时间:2024/04/25 14:15
一. 对象锁和类锁是否会互相影响?
对象锁:Java的所有对象都含有1个互斥锁,这个锁由JVM自动获取和释放。线程进入synchronized方法的时候获取该对象的锁,当然如果已经有线程获取了这个对象的锁,那么当前线程会等待;synchronized方法正常返回或者抛异常而终止,JVM会自动释放对象锁。这里也体现了用synchronized来加锁的1个好处,方法抛异常的时候,锁仍然可以由JVM来自动释放。
类锁: 对象锁是用来控制实例方法之间的同步,类锁是用来控制静态方法(或静态变量互斥体)之间的同步。其实类锁只是一个概念上的东西,并不是真实存在的,它只是用来帮助我们理解锁定实例方法和静态方法的区别的。我们都知道,java类可能会有很多个对象,但是只有1个Class对象,也就是说类的不同实例之间共享该类的Class对象。Class对象其实也仅仅是1个java对象,只不过有点特殊而已。由于每个java对象都有1个互斥锁,而类的静态方法是需要Class对象。所以所谓的类锁,不过是Class对象的锁而已。获取类的Class对象有好几种,最简单的就是MyClass.class的方式。
类锁和对象锁不是同1个东西,一个是类的Class对象的锁,一个是类的实例的锁。也就是说:1个线程访问静态synchronized的时候,允许另一个线程访问对象的实例synchronized方法。反过来也是成立的,因为他们需要的锁是不同的。
0 0
- android面试题四
- android 面试题(四)
- Android 面试题四
- Android面试题集四
- Android面试题(四)
- android面试题之四
- Android面试题(四)
- Android面试题(四)
- Android面试题集锦(四)
- Android面试题-与性能优化相关面试题四
- Android--面试题整理(四)
- Android面试题四-简答题
- 面试题四
- 面试题之四
- java面试题(四)
- php面试题四
- 算法面试题四
- 微软面试题<四>
- mysql做简单用户登陆的几种方式
- NP完全性理论与近似算法
- 项目二级目录下的index.php使用nginx重写
- 学习帖-廖雪峰Python教程3.0-Python基础-字符串和编码
- 观察者与陀螺仪传感器的应用(基于PanoramaImageView)
- Android 面试题四
- Hdu 5253 连接的管道【思维建图+最小生成树】
- 用 Flask 来写个轻博客 (35) — 使用 Flask-RESTful 来构建 RESTful API 之四
- 无题
- 深入理解Java的接口和抽象类
- OpenCV中IplImage和单字节char*的相互转换
- Getting “org.hibernate.TransactionException: nested transactions not supported” error when deleting
- 《C++ Primer Plus(第六版)》(36)(第十六章 string类和标准模板库 编程练习和答案)
- Android网络——Http通信