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