问题详情

下列说法中错误的一项是


A、当线程需要在synchronized块中等待共享数据状态改变时,则需要调用wait()方法

B、当线程需要在synchronized块中等待共享数据状态改变时,则需要调用notify()方法

C、线程在synchronized块中执行完操作后,调用notify()方法通知正在等待的线程重新占有锁

D、wait()和notify()可以实现线程的同步操作

时间:2023-03-05 22:21 关键词:

答案解析

B
解析:本题考查线程间交互的概念。当线程进入synchronized块后,共享数据的状态并不一定满足该线程的需要,它要等待其他线程将共享数据改变为所需要的状态后才能继续执行,但由于此时它占有了该对象的锁,其他线程无法对共享数据进行操作,此时线程调用wait()方法进入等待状态,并且暂时释放共享数据的对象锁,其他线程可以获得该对象锁,进入synchronized块进行操作,操作完成之后,再调用notify()方法通知等待的线程重新占有锁,这样就实现了线程的同步操作。由此可见,wait()方法是线程需要在 synchronized块中等待共享数据状态改变时调用,而notify()方法是线程在synchronized块中执行完操作后调用,用来通知正在等待的线程重新占有锁,选项B的说法错误。