TimurVI Asked:2020-02-07 22:23:11 +0800 CST2020-02-07 22:23:11 +0800 CST 2020-02-07 22:23:11 +0800 CST 为什么 wait/notify/notifyAll 方法是在 Object 类中定义的,而不是在 Thread 类中? 772 为什么wait/notify/notifyAll方法是在类中定义Object而不是在类中Thread? java 2 个回答 Voted Best Answer Artem Konovalov 2020-02-07T22:56:55+08:002020-02-07T22:56:55+08:00 实际上是一个有趣的问题。 在 java 中,对象可以充当互斥体,即 参与划分不同线程之间对资源的访问的过程。使用synchronized块和方法wait, notify, notifyAll. 因此,对这个对象的访问应该是所有想要获得对资源的独占权的线程。因此,您的问题的答案 - 为什么这些方法不在Thread. 如果是这种情况,其他线程将不得不存储其他线程的信息(等待访问资源)并在资源释放时独立唤醒它们,这不是很方便🙂 Oleg Marchenko 2020-02-07T22:27:45+08:002020-02-07T22:27:45+08:00 因为这些方法直接引用对象。通过这种方式,可以阻塞任何 Java 对象,从而强制线程队列竞争当前对象的监视器。
实际上是一个有趣的问题。
在 java 中,对象可以充当互斥体,即 参与划分不同线程之间对资源的访问的过程。使用
synchronized
块和方法wait
,notify
,notifyAll
.因此,对这个对象的访问应该是所有想要获得对资源的独占权的线程。因此,您的问题的答案 - 为什么这些方法不在
Thread
. 如果是这种情况,其他线程将不得不存储其他线程的信息(等待访问资源)并在资源释放时独立唤醒它们,这不是很方便🙂因为这些方法直接引用对象。通过这种方式,可以阻塞任何 Java 对象,从而强制线程队列竞争当前对象的监视器。