因为 Java 所有的类都继承了 Object,Java想让任何对象都可以作为锁,并且wait(),notify()等方法用于等待对象的锁或者唤醒线程,在 Java的线程中并没有可供任何对象使用的锁,所以任意对象调用方法一定定义在Object类中。
有的人会说,既然是线程放弃对象锁,那也可以把 wait()定义在 Thread 类里面啊,新定义的线程继承于 Thread 类,也不需要重新定义wait()方法的实现。然而,这样做有一个非常大的问题,一个线程完全可以持有很多锁,你一个线程放弃锁的时候,到底要放弃哪个锁?当然了,这种设计并不是不能实现,只是管理起来更加复杂。
Was this helpful?
0 / 0