码迷,mamicode.com
首页 > 其他好文 > 详细

并发编程:等待/通知机制

时间:2020-07-11 12:45:49      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:strong   释放   同步方法   blog   等待队列   com   html   https   做什么   

wait & notify/notifyAll

通过之前的文章,https://www.cnblogs.com/fcb-it/p/13282740.html 我们已经知道了重量级锁会存在等待队列和阻塞队列,这两个队列是做什么用的呢?
阻塞队列:BLOCKED状态的线程会在该队列,当发现锁可用时,线程有机会获取锁,一般线程没抢到锁就会进入该队列
等待队列:该队列的线程不会去尝试获取锁,只有持有锁的对象调用了notifyAll()方法以后,队列中的线程会全部加入到阻塞队列,此时线程才真正有获取锁的可能。调用了WAIT()方法的线程会进入该队列。

wait()方法会释放锁,并进入等待队列。释放锁意味着wait()方法必须在同步方法、代码块中,不持有锁就无法释放锁
notify()也必须在同步方法、代码块中,因为通知需要唤起当前锁的等待队列中的一个线程,但是notify()不会释放锁,
这意味着通知不会立即让被通知的线程执行,而是将线程从等待队列进入阻塞队列,等到线程真正执行完代码块释放锁时,阻塞队列中的线程才有机会获取到锁。

notify()方法通常不确定能唤醒哪个线程,一般使用notifyAll()方法。

并发编程:等待/通知机制

标签:strong   释放   同步方法   blog   等待队列   com   html   https   做什么   

原文地址:https://www.cnblogs.com/fcb-it/p/13282898.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!