黑马程序员技术交流社区
标题:
求解释等待唤醒机制细节
[打印本页]
作者:
wodeairenw
时间:
2013-3-9 23:51
标题:
求解释等待唤醒机制细节
class DDHXTest
{
public static void main(String[] args)
{
Res r = new Res();
Input in =new Input(r);
Output out =new Output(r);
Thread t1 =new Thread(in);
Thread t2 =new Thread(out);
t1.start();
t2.start();
}
}
class Res
{
String name;
String sex;
boolean flag = false;
}
class Input implements Runnable
{
private Res r;
Input(Res r)
{
this.r =r;
}//这个构造函数的作用?
public void run()
{
int x =0;
while(true)//这个如何理解。
{ synchronized(r)
{
if(r.flag)
try
{
r.wait();
}
catch (Exception e)
{
}
if(x==0)
{
r.name="mike";
r.sex="nannan";
}
else
{
r.name="丽丽";
r.sex="女女女女女";
}
x = (x+1)%2;
r.flag = true;
r.notify();
}
}
}
}
class Output implements Runnable
{
private Res r;
Output(Res r)
{
this.r =r;
}
public void run()
{
while(true)
{
synchronized(r)
{
if(!r.flag)
try
{
r.wait();//那个锁就用那个对象的,如Object就是Object锁就Object.wait
}
catch (Exception e)
{
}
System.out.println(r.name+"....."+r.sex);
r.flag = false;
r.notify();//那个锁就用那个对象的,如Object就是Object锁就Object.notify,即标示所属的锁。看说明。
}
}
}
}
这是多线程里面等待唤醒机制的代码,里面有几个问题想请教下。
1.while(ture)循环语句,为什么括号里面需要写意个ture,这个不知道如何理解。
2.Input构造函数作用?
private Res r;//3.这个的作用是什么?如String类类型定义一个引用?如String name?。
Input(Res r)
{
this.r =r;
}
就我的理解是主函数里面已经建立对象就没必要传入Res r引用,该类可以直接调用吧。求解释下。
作者:
amen0205
时间:
2013-3-10 05:53
1 while 循环要判断条件才能运行 true是为了保证循环能一直执行下去 这样才能不停的 写入 数据 取出数据
2 构造函数的左右 是为保证资源Res的唯一性 在main方法里面创建了Res对象 两个类的对象都要对同一个Res对象进行操作
3 额 你该类中需要用到Res对象 当然要定义一个 不然对谁进行操作
你的理解是不对的 主函数建立对象了 那这个对象和 Input 类还有Ourput类怎么建立关系呢 不传入就没关系 没关系 那数据往哪写 又从哪读
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2