为什么这三个方法要放在Object中。
这三个方法几乎是不需要重载的,那为什么不定义为静态的。
难道当进入sychronized之后,只有持有锁的对象使用这三个方法才可以对当前线程进行操作吗?
那为什么sleep方法在Thread中,而且是静态的。
同样是线程操作,Thread和Object中的方法有什么本质上的区别。

解决方案 »

  1.   

    不是这个意思...对象使用这些方法表示:线程在该对象上等待,等待该对象的通知...每个对象都有一个锁...因此如果这些方法是静态的,你怎么知道是哪个被锁上的对象发出通知给线程?
    还有就是,假设方法是静态的,那么相当于我们把该类上锁了...
    那么打个比方,你银行取款,当你取款的时候,任何人是不能够在另外的的机器上和你使用相同的帐号(这是你想要的)
    但是...因为我们前面的假设,因此你取款的时候,任何人的任何帐号是取不了款的...这个结果可能很糟吧?同步线程的目的是什么?是防止线程在对一个对象操作的时候,另一个线程修改或者读取了该对象...可能导致脏读...sleep方法使用静态,因为它指的是当前线程,也就是当前唯一正在执行的线程...并没有指Thread这个类阿...
      

  2.   

    非静态并不只是为了被重载
    同时为了以实例的形式存在
    wait notify notifyAll等方法都是涉及当前线程和对象的监视器的比如wait方法中一句可见一斑The current thread must own this object's monitor.
      

  3.   

    wait notify notifyAll都是针对实例对象的方法,又不是对整个类的,怎么能用静态的呢
      

  4.   

    我也被带过去了 是覆盖吧 override