调用object.wait()时,线程先要获取这个对象的锁,当前线程必须与锁对象保持同步,把当前线程添加到等待队列中,随后另一线程可以同步同一个对象锁来调用notify(),这样将唤醒原来等待中的线程,然后释放该锁
举一反三
- 对于wait()方法,下面说法正确的是?() A: wait()方法的调用者是同步锁对象 B: wait()方法使线程进入等待状态 C: 调用同一锁对象的notify()或notifyAll()方法可以唤醒调用wait()方法等待的线程 D: 调用wait()方法的线程会释放同步锁对象
- 【单选题】使当前线程放弃同步锁并进入等待,直到其他线程进入此同步锁,并调用notify()或notifyAll()方法唤醒该线程为止的是什么方法声明() A. void notify() B. void notifyAll() C. void wait() D. 无
- 下列关于阻塞等待方法wait()的描述中,错误的是( )。 A: 阻塞等待方法wait()只能在同步方法或同步语句中调用 B: 调用wait()方法,当前线程会释放对象锁 C: 调用wait()方法,当前线程会进入阻塞状态 D: 调用wait()方法,进入阻塞状态的当前线程会在休眠一定时间后自动恢复运行
- 当一个线程拥有对象锁时,其他线程也可以获取这个锁。
- 当线程调用了某个对象的wait(long timeout)方法时,以下说法正确的是 A、 可以通过其他线程调用notify()方法唤醒当前等待中的线程 B、 可以通过其他线程调用notifyAll()方法唤醒当前等待中的线程 以上都正确 可以等待限时时间结束后进行状态转换