黑马程序员技术交流社区
标题:
关于消费之和生产者的问题
[打印本页]
作者:
奋发吧小白
时间:
2014-8-25 00:30
标题:
关于消费之和生产者的问题
咨询下大家:
在毕老师的视频第146讲 多线程(线程间通信-生产者消费者)中
public synchronized void set(String name)
{
if(flag)
try
{
this.wait();
}catch(Exception e)//t1(失去资格) t2(失去资格)
{
e.printStackTrace();
}
this.name = name+"......"+count++;
System.out.println(Thread.currentThread().getName()+"...生产者。。。。"+this.name);
flag = true;
this.notify();
}
public synchronized void out()
{
if(!flag)
try
{
this.wait();
}catch(Exception e)
{
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"...消费者。。。。"+this.name);
flag = false;
this.notify();
}
我想问一下,在同步函数set中 线程 t1 进去后 不出来 t2 还能进的去?为什么?
作者:
hejinzhong
时间:
2014-8-25 01:07
是可以进去的。虽然t1进去后,会持有锁,暂时其他线程是进不来的,但如果进过if判断,t1 wait之后,就会释放锁,其他线程拥有同等的机会,也就是t2可能会拿到执行权,可以进入函数中
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2