如何在 Java 中正确使用 wait,notify 和 notifyAll
12个回答
展开全部
一般来说不需要直接用到,因为 jdk 已经有了很多并发 api。
可能需要注意的就是,线程的等待及唤醒可能不一定成功。
比如 wait 后,有可能会被意外唤醒,所以一般会有个 while 在外面,jdk 里有相应的说明,只要你看懂了应该就可以用对了。
可能需要注意的就是,线程的等待及唤醒可能不一定成功。
比如 wait 后,有可能会被意外唤醒,所以一般会有个 while 在外面,jdk 里有相应的说明,只要你看懂了应该就可以用对了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
都需要在使用前使用synchronized关键字
在逻辑业务上wait需要在notify之前执行
使用了wait的线程将阻塞并释放当前对象的锁,等待其他线程调用当前持有对象的notify方法
持有当前对象的线程执行了notify/notifyall,将唤醒之前调用wait的一个线程/全部线程
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我们可以利用wait()来让一个线程在某些条件下暂停运行。
notify 和 notifyAll 来通知那些等待中的线程重新开始运行。
不同之处在于,notify 仅仅通知一个线程,并且我们不知道哪个线程会收到通知,然而 notifyAll 会通知所有等待中的线程。
notify 和 notifyAll 来通知那些等待中的线程重新开始运行。
不同之处在于,notify 仅仅通知一个线程,并且我们不知道哪个线程会收到通知,然而 notifyAll 会通知所有等待中的线程。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
wait,线程等待,对线程进行阻塞,不调用notify或者notifyAll,线程会一直被挂起。
notify唤醒等待中的线程,notify唤醒所有等待中的线程。
notify唤醒等待中的线程,notify唤醒所有等待中的线程。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我所知道有两点要注意的:
必须要在同步代码块或者同步函数中
必须由锁对象调用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询