为什么这三个方法要放在Object中。
这三个方法几乎是不需要重载的,那为什么不定义为静态的。
难道当进入sychronized之后,只有持有锁的对象使用这三个方法才可以对当前线程进行操作吗?
那为什么sleep方法在Thread中,而且是静态的。
同样是线程操作,Thread和Object中的方法有什么本质上的区别。
这三个方法几乎是不需要重载的,那为什么不定义为静态的。
难道当进入sychronized之后,只有持有锁的对象使用这三个方法才可以对当前线程进行操作吗?
那为什么sleep方法在Thread中,而且是静态的。
同样是线程操作,Thread和Object中的方法有什么本质上的区别。
还有就是,假设方法是静态的,那么相当于我们把该类上锁了...
那么打个比方,你银行取款,当你取款的时候,任何人是不能够在另外的的机器上和你使用相同的帐号(这是你想要的)
但是...因为我们前面的假设,因此你取款的时候,任何人的任何帐号是取不了款的...这个结果可能很糟吧?同步线程的目的是什么?是防止线程在对一个对象操作的时候,另一个线程修改或者读取了该对象...可能导致脏读...sleep方法使用静态,因为它指的是当前线程,也就是当前唯一正在执行的线程...并没有指Thread这个类阿...
同时为了以实例的形式存在
wait notify notifyAll等方法都是涉及当前线程和对象的监视器的比如wait方法中一句可见一斑The current thread must own this object's monitor.