一个对象只有一把监视锁,同一时间只可能被一个线程获得.
比如说对象t有同步方法foo(),之前那句话的意思就是永远不可能有两个线程同时进入foo方法.在多核或者多CPU的环境下,如果两个线程总是同时想获得t的监视锁然后进入foo(当然这仅仅是假设会有这么一种情况,为了更好表达我的疑惑),那程序是不是就停在那不前进了?

解决方案 »

  1.   

    空闲的锁,会被jvm自动给某个请求者(应该是随机的),其它的继续等待。
      

  2.   

    如果两个线程总是同时想获得t的监视锁然后进入foo--一定会有先后的。
      

  3.   

    多核或多CPU的架构,是以内存为中心的,内存还是同一片内存,访问内存还是分先后的。
    而监视锁是保存在内存中,访问还是顺序的。