浏览 1578 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-03-28
最后修改:2012-03-28
这两天在学多线程这块,对wait和notify、notifyAll感觉有点模糊,所以发帖求证下,下面的是我看资料后的个人总结,有什么问题的,希望大家指导下,多谢了
1、 首先,这三个方法是在Object的类下的,不是在Thread的类中的。所以,这三个方法表示的是java类所具有的本身的行为,不是多线程下的特性。 2、 JVM会给每一个对象都分配唯一的一把锁。这把锁是在对象中的。获得这把锁的前提是需要将该对象锁定。因为,锁同一时间只能被单条线程所持有,所以需要对该对象synchronized标识。 3、 从以上两点可以得出,调用wait其实是将,同步对象的锁从持有线程那收回,并将该线程调度到等待队列。而notify就是将锁定在该同步对象上处于等待队列的某个线程重新调度到就绪队列。而notifyAll则是唤醒等待队列中的所有线程,将这些线程调度到就绪队列,至于,哪个线程能得到该同步对象,这是由CPU根据竞争选择其中的一条线程。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |