6

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

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

4

2 回答 2

5

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

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

2) 锁是基于每个对象提供的,这是在 Object 类而不是 Thread 类中声明 wait 和 notify 的另一个原因。

于 2013-05-09T07:49:53.127 回答
0

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

于 2013-05-09T07:49:12.467 回答