当我们在线程对象上使用线程时,我们有start(), run() and join() methods
个线程,这些方法在Thread class
下。
我们也使用Thread对象wait(), notify(), and notifyAll()
,但这些方法都在Object class
下。
我在想为什么需要在Object类下定义这些方法,因为我们只用Threads
调用它们。我们知道,只要我们调用wait()
对象进入等待状态,等待共享资源/条件满足,但这只能在线程环境中发生。
所以问题是为什么需要将这些方法放在Object类下?
如果我在这里遗漏任何东西,请告诉我。
答案 0 :(得分:2)
方法wait()
/ notify()
/ notifyAll()
属于对象,因为它们与监视器一样使用此对象。
在询问之前尝试在SO上搜索相同的问题...
答案 1 :(得分:0)
每个Java对象都有一个monitor与之关联。您引用的功能在对象的监视器上运行。这就是他们需要在Object
下定义的原因(他们可以已成为其他类的static
成员,但他们需要采用类型参数无论如何Object
。
答案 2 :(得分:0)
Object类是所有java类的超类.Object中的方法可以在任何类中用于同步。