为什么Object类有Thread方法?

时间:2013-05-09 07:47:45

标签: java api-design

为什么Object类有与线程相关的方法,例如wait()notify()notifyAll()

我们需要扩展Thread或实现Runnable以向类提供类似线程的行为。那么他们为什么不成为任何ThreadRunnable对象的一部分?

2 个答案:

答案 0 :(得分:4)

Java并发模型使用锁来实现对多线程环境中对象的互斥访问,并且锁与Java中的每个对象(“对象”类型)相关联,而不仅仅与线程相关联。

1)等待并通知Java中两个线程之间的通信机制。并且Object类是使它们可用于每个对象的正确位置,因为它是所有对象的超类。

2)锁定在每个对象的基础上可用,这是在Object类而不是Thread类中声明wait和notify的另一个原因。

答案 1 :(得分:0)

如果线程已锁定在对象实例上,则在该对象实例上调用notify将唤醒这些线程。因此,由于锁是一个对象实例,与该锁相关的操作属于对象实例。