您的位置:首页 > 其它

多线程锁和反射的再次理解

2015-11-01 15:49 295 查看
只有对象才有锁,一个对象有且只有一把锁。

  只能使用对象的锁去同步,且只能同步方法/代码块,而不能同步变量和类;
  同步损害并发性,应尽可能缩小同步范围。

注意:同步代码块与同步方法的区别  一个类中要同步多个方法时都使用,为了避免锁的冲突,必然需要使用不同的对象,要使用同步代码块,方法

         多个类中使用同一个琐,也必须用同步代码库方法。

  分类  1代码块锁,2方法锁 同步整个方法的锁 :

             (this当前对象锁 , 静态类对象锁其实系统中并不存在什么类锁。当一个同步静态方法被调用时,系统获取的其实就是代表该类的类对象的对象锁)。

             在Java多线程编程中,最常见的synchronized关键字实际上是依靠对象锁的机制来实现线程同步的。我们似乎可以听到synchronized在向我们说:“给我一把 锁,我能创造一个规矩”。
  死锁  多线程死锁是因为 出现了互斥锁 互斥锁 即当前的动作需要未来作为驱使条件,而未来又是没有实现的,即用一个不存在的条件驱使当前的动作,则必然死锁。

 反射 反射就是吧java类中的各种成分映射成相应的java类.

Class类---》类的类- 》

获得对象就是当前类

方法的类----》获得对象个对象即当前方法

成员变量的类-----》

获得对象即是当前成员变量

!!!!!每个自定义的类都是Class类的一个对象。

在一个运行的程序中,会有许多类和接口存在。我们就用Class这个来来表示对这些类和接口的抽象

,而Class类的每个实例则代表运行中的一个类。例如,运行的程序有A、B、C三个类,那么Class类就是对A、B、C三个类的抽象。

所谓抽象,就是提取这些类的一些共同特征,比如说这些类都有类名,都有对应的hashcode,

可以判断类型属于class、interface、enum还是annotation。这些可以封装成Class类的域,

另外可以定义一些方法,比如获取某个方法、获取类型名等等。这样就封装了一个表示类型的类。(type)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: