书上有这样一句话 看不明白:
针对每个类 也有一个锁(作为类的Class对象的一部分) 所以syschronized static 方法可以在类的范围内防止对static数据的并发访问
请高手尽量详细的解答一下 包括“()”里的内容 结合起来回答
谢谢

解决方案 »

  1.   

    针对每个类 也有一个锁(作为类的Class对象的一部分)
    这是类的一种设计.如果把类比作是一张门,那么每张门都应该拥有一把锁,并作为门的一部分.
    syschronized static 方法可以在类的范围内防止对static数据的并发访问 由于静态的方法是类级别的(就是可以通过类名直接访问)不需要具体的实例. 所以静态方法同步的话.自然就是类范围类的同步.
      

  2.   

    说白了,就是这样的实现体
    class className
    {
        Lock lock1; × N
        static Lock lock2; × 1
    }所以,1楼的说法是对的。
      

  3.   

    针对每个类 也有一个锁(作为类的Class对象的一部分) 
    同意:这是类的一种设计.如果把类比作是一张门,那么每张门都应该拥有一把锁,并作为门的一部分. syschronized static 方法可以在类的范围内防止对static数据的并发访问  
    个人:主要是防止相同权限的线程对此静态方法进行并发访问,
    而造成线程的死锁...
     
      

  4.   

    Class 级别的锁
    Class instance 级别的锁一个是 static 的
    另一个则没有。
      

  5.   

    调用syschronized static 方法时是用的Class对象的锁,调用syschronized 实例方法时是用的this(该类的实例)的锁
      

  6.   

    syschronized()里"() "的内容应该是一个对象,如果要保持函数或者是代码之间的同步.
       ()里的对象就得保持一致!
      

  7.   

    syschronized   括号里面的部分只是用notify和wait的时候有作用,如果单纯意义上的使用同步的话实际上syschronized就是这个意思不关心()里面的东西。(锁) 一个锁对应一个线程池 用于等待和唤醒多线程编程是比较难的一部分,这个地方我没十足把握说的对,如果不对还请楼下更正。
      

  8.   

    一个类的实例,即对象就是一个锁,当每个线程A访问这个对象时,这把锁便被这个线程A加上了扣,其他线程无法访问
    ,必须在A访问完毕时,最后把锁才被解开,那么其他线程就可以访问了。更多理解可参看http://www.enet.com.cn/eschool/zhuanti/java/  网页上视频教程第五课的"第五课D"开始的内容!
    里面有关于同步(syschronized)的详细讲解!是针对具体的实例讲解的!