黑马程序员技术交流社区
标题:
等待唤醒机制的那个标记是怎么回事 求详解
[打印本页]
作者:
crazylong
时间:
2014-6-5 22:02
标题:
等待唤醒机制的那个标记是怎么回事 求详解
public void set(String name)throws InterruptedException
{
lock.lock();
try
{
while(flag)
condition_pro.await();//t1,t2
this.name = name+"--"+count++;
System.out.println(Thread.currentThread().getName()+"...生产者.."+this.name);
flag = true;
condition_con.signal();
}
finally
{
lock.unlock();//释放锁的动作一定要执行。
}
}
// t3 t4
public void out()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();
}
}
}执行顺序
作者:
谭荣强
时间:
2014-6-8 06:15
在线程中标记很重要,加标记为了为了让多个线程轮流执行。一个线程执行完,就把标记改了(本方即使夺得执行权也不能执行),另一个线程进来,判断标记(如:true),执行,..................。
就是解决问题的一种方法嘛,多用几次就懂了
而且,标记在后面讲的结束线程时也很重要。
作者:
123_yaya
时间:
2014-6-8 13:31
是问flag这个吗?flag是定义在资源类里面的,我理解的是,如果资源里面有东西,那么flag为false,代表没有资源,说明生产者可以生产,消费者不可以消费。当生产者生产完一个资源后,flag置为ture,同时唤醒消费者notify(),生产者本身不可以生产了,await()等待,但是消费者可以消费。如此循环。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2