黑马程序员技术交流社区
标题:
关于线程贱通讯方法的一点疑问
[打印本页]
作者:
15001162522
时间:
2015-10-15 00:36
标题:
关于线程贱通讯方法的一点疑问
1. wait() notify() notifyAll() 为什么要通过所对象来调用?
2.
class Resource
{
private String name;
private int count=1;
private boolean flag = false;
//多态
private Lock lock=new ReentrantLock();
//创建两Condition对象,分别来控制等待或唤醒本方和对方线程
Condition condition_pro=lock.newCondition();
Condition condition_con=lock.newCondition();
//p1、p2共享此方法
public void setProducer(String name)throws InterruptedException
{
lock.lock();//锁
try
{
while(flag)//重复判断标识,确认是否生产
condition_pro.await();//本方等待
this.name=name+"......"+count++;//生产
System.out.println(Thread.currentThread().getName()+"...生产..."+this.name);//打印生产
flag=true;//控制生产\消费标识
condition_con.signal();//唤醒对方
}
finally
{
lock.unlock();//解锁,这个动作一定执行
}
}
//c1、c2共享此方法
public void getConsumer()throws InterruptedException
{
lock.lock();
try
{
while(!flag)//重复判断标识,确认是否可以消费
condition_con.await();
System.out.println(Thread.currentThread().getName()+".消费."+this.name);//打印消费
flag=false;//控制生产\消费标识
condition_pro.signal();
}
finally
{
lock.unlock();
}
}
}
复制代码
上述代码中,为什么 condition_pro 和conditon_con 只是两个变量名字而已,为什么condition_pro.await()就表示了本方等待?condition_pro是怎么指向本方线程的?不可能是因为变量名是pro就指向生产线程吧?
作者:
15001162522
时间:
2015-10-15 00:37
1.为什么要通过锁对象调用?字写错啦
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2