Java面试的十大棘手问题之一
推荐
在线提问>>
为什么在 Object 类中定义 wait 和 notify 方法,为何 wait,notify 和 notifyAll 属于 Object 类?为什么它们不应该在 Thread 类中?这是大家在面试中经常会被面试官问到的一个问题,那下面就是这个问题该怎样回答,大家可以参考参考。

wait 和 notify 不仅仅是普通方法或同步工具,更重要的是它们是 Java 中两个线程之间的通信机制。对语言设计者而言, 如果不能通过 Java 关键字(例如 synchronized)实现通信此机制,同时又要确保这个机制对每个对象可用, 那么 Object 类则是的正确声明位置。记住同步和等待通知是两个不同的领域,不要把它们看成是相同的或相关的。同步是提供互斥并确保 Java 类的线程安全,而 wait 和 notify 是两个线程之间的通信机制。
每个对象都可上锁,这是在 Object 类而不是 Thread 类中声明 wait 和 notify 的另一个原因。
在 Java 中为了进入代码的临界区,线程需要锁定并等待锁定,他们不知道哪些线程持有锁,而只是知道锁被某个线程持有, 并且他们应该等待取得锁, 而不是去了解哪个线程在同步块内,并请求它们释放锁定。
Java 是基于 Hoare 的监视器的思想。在Java中,所有对象都有一个监视器。
大家可以参考对比一下自己将来遇到的时候可以怎么回答哦,有想在Java方面有所提升的也可以搜索千锋Java培训,如果对Java感兴趣的也可以到千锋上海Java培训来试听哦。
