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


只有对象才有锁,一个对象有且只有一把锁。
  只能使用对象的锁去同步,且只能同步方法/代码块,而不能同步变量和类;

  同步损害并发性,应尽可能缩小同步范围。

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

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

  分类  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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章