之前一直跟架构师去面试别人,他总希望问一个问题:notify 与notifiall的区别,听了很多人的答案,其实都差不多,但是他总感觉不满意,现在自己也总结了一下:
notify()唤醒一条线程
notifyAll()唤醒全部线程
notify随机唤醒一条等待队列里的线程,而notifyall是唤醒全部,让全部等待线程进行竞争资源。如果使用notify,可能某些线程会一直没有被唤醒。
除非深思熟虑,尽量使用notifyall
之前一直跟架构师去面试别人,他总希望问一个问题:notify 与notifiall的区别,听了很多人的答案,其实都差不多,但是他总感觉不满意,现在自己也总结了一下:
notify()唤醒一条线程
notifyAll()唤醒全部线程
notify随机唤醒一条等待队列里的线程,而notifyall是唤醒全部,让全部等待线程进行竞争资源。如果使用notify,可能某些线程会一直没有被唤醒。
除非深思熟虑,尽量使用notifyall