不会吧,java里的锁是可重入的,难道不同jvm不一样??不可能。

解决方案 »

  1.   

    miwoo(miwoo)  解释一下 谢谢
      

  2.   

    我也用的是jb9  我就是看的jb9的帮助  我不明白这段程序在什么时候会出错 :(
      

  3.   

    明白了,大概是这样的:
    (1)  synchronized(t) {
    (2)     synchronized(t) {
            System.out.println("made it!");
          }
        }
    如果一个单线程不允许被锁多次,或者说只允许锁一次,那么(1)处加锁第一次后,(2)处的加锁只能等待(1)处解锁后才能再次加锁。而(1)处解锁是它的{...}执行完毕,若要(1)处加锁的{...}执行完毕,则必须执行(2)处的加锁。这样的话,(2)等待(1),(1)等待(2),就产生了死锁
      

  4.   

    它是说假如不允许的话,实际上java里的锁是可重入的,也就是只要一个线程获得了某个对象上的锁,那这个线程再对这个对象加锁都不会阻塞。
      

  5.   

    翻译得什么呀?明显是一个假设句,说明同步锁对于一个线程是可以重入的.
    俺E文也不好,但是意思还是能够看明白:This example would deadlock if a single thread were not permitted to lock a lock more than once。
    如果不允许一个线程重入同步锁,那么上面的例子就会发生死锁.
      

  6.   

    上面这个例子会出现死锁,如果一个单一的线程不允许被锁定多次。难道和不同的jvm有关系?
      

  7.   


    既然java的的同步锁对一个线程是可以重入的
    哪究竟什么情况下这个假设句会成立从而产生死锁啊?
      

  8.   

    这是JLS中的例子,这个例子就不会产生死锁.
    就是在解释这样不死锁!无论哪个虚拟机,你去运行这个例子,都不会死锁!
      

  9.   

    大家都讨论得很明白了
    应该就是xiaohaiz(老土进城,两眼通红) 翻译的这个意思