为什么Object
类有与线程相关的方法,例如wait()
,notify()
,notifyAll()
?
我们需要扩展Thread
或实现Runnable
以向类提供类似线程的行为。那么他们为什么不成为任何Thread
或Runnable
对象的一部分?
答案 0 :(得分:4)
Java并发模型使用锁来实现对多线程环境中对象的互斥访问,并且锁与Java中的每个对象(“对象”类型)相关联,而不仅仅与线程相关联。
1)等待并通知Java中两个线程之间的通信机制。并且Object
类是使它们可用于每个对象的正确位置,因为它是所有对象的超类。
2)锁定在每个对象的基础上可用,这是在Object类而不是Thread类中声明wait和notify的另一个原因。
答案 1 :(得分:0)
如果线程已锁定在对象实例上,则在该对象实例上调用notify将唤醒这些线程。因此,由于锁是一个对象实例,与该锁相关的操作属于对象实例。