本帖最后由 ameyume 于 2010-09-01 21:07:06 编辑

解决方案 »

  1.   

    恭喜你答错了,对于同一个类的多个对象,每个对象都有一把锁。锁可以是object级别的,也可以是class级别的。
      

  2.   

    在 Java 的世界里,每个对象实例本身都是一把锁,包括一个 Class 对象(就是1楼说的class级别)。■□■□■□■□■□■□■□■
    □             □
    ■  忍以明志 勤以致远  ■
    □             □
    ■□■□■□■□■□■□■□■
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)
      

  3.   

    是谁跟你说的 sleep 可以实现同步?
      

  4.   

    百度了一下,
    看到有人这么回答,看来真是尽信书不如无书啊,何况是baidu呢线程同步有几种方法??
    http://zhidao.baidu.com/question/15390715.html?fr=ala0
      

  5.   

    也就是说sleelp只起到睡眠等待的作用,并不能使线程同步?
      

  6.   

    是控制线程的几种方法  不是同步设置优先级
    sleep
    yield
    join同步用synchronized
      

  7.   

    同步主要是为了解决多线程访问的情况下,出现读到脏数据的情况除了synchronized,wait,notify能达到此功能之外
    还有volatile关键字在Java1.2之后,又有ThreadLocal用于隔离不同线程,属于不同类型的同步吧。现在Java7之后,又有fork in机制。
      

  8.   


    多个线程竞争的其实是锁。你可以用某个对象的隐式锁(称L)把某段代码“锁住”。一个线程首先进入这段代码后,这个线程就独占这个锁L,其他线程只有等这个线程执行完这段被锁代码,释放锁L后才能再去竞争锁L,从而进入这段代码。至于notify是跟对象的隐式条件有关,你可以去看一下《java核心技术》的线程那一章,它将的蛮清楚的。在java5里好像还出现了单独的锁对象和条件对象。顺便提一下,我看的是java5的黄底红字第7版。
      

  9.   

    我认为楼主走入锁的泥塘了。不要去考虑是不是每个对象有把锁,类是不是有把锁等定。这样想,
    1.任何对象都可以做锁。
    2.对于有用synchronized的地方,分析清楚他用的是什么作为锁。
        如静态方法 前加 synchronized, 锁是什么?  是该类对应的class对象。
        非静态方法呢?  是当前对象。
        synchronized 代码块呢? 是你指定的那个对象。
    把这两点搞清楚了,这个锁的问题就豁然开朗了。
      

  10.   

    对于同一个类的多个对象,每个对象都有一把锁。锁可以是object级别的,也可以是class级别的。
      

  11.   


    不要说锁是什么级别的,你的意思准确说是这样:
    锁可以是object级别的   ---》非静态方法呢? 是当前对象。
    class级别的---》 如静态方法 前加 synchronized, 锁是什么? 是该类对应的class对象。
    锁无级别,就是看你用谁做锁。
      

  12.   

    哥们,sleep应该是不能实现同步吧,比如说sleep(1000),这并不是一秒,要根据倒是系统线程与进程的运行状况来判定,有可能小于一秒,也可能大于一秒!!!