黑马程序员技术交流社区
标题:
多线程同步函数的一个问题
[打印本页]
作者:
Adjin
时间:
2014-7-22 11:56
标题:
多线程同步函数的一个问题
public synchronized void set(String name)
{
while(flag)
try{this.wait();}catch(Exception e){}
this.name=name+"---"+count++;
System.out.println(Thread.currentThread().getName()+"生产者"+this.name);
flag=true;
this.notifyAll();
}
假设有两个线程1,2来执行,1进来了,假设wait了,那么2不是进不来了吗?2能进来吗?看视频的时候两个都wait在这里了
作者:
fantacyleo
时间:
2014-7-22 12:00
调用wait()方法的线程会释放同步锁
作者:
idency
时间:
2014-7-22 12:04
可以进来的,要是不进来就没办办法唤醒啊
作者:
Adjin
时间:
2014-7-22 12:18
明白了,一个在Thread类中,一个在Object()类中,
sleep()不释放同步锁,wait()释放同步锁。
作者:
shen7518
时间:
2014-7-22 12:25
1进来之后wait(),1就释放了锁对象,后面语句就执行不了了,2虽然可以进来,但在whie循环时就wait()了释放锁,同样后面的执行不了,只有get()方法的线程进去时,while条件不成立,不wait()释放锁,就可以执行后面的语句了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2