class InputOutputDemo
{
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();
}
}
private Res r ;
这句话什么意思呢 为什么要加private 还有 Res不是类吗 为什么不这样写 Res r =new Res() 还有
Input(Res r)
{
this.r = r;
}
这个不是构造方法吗 其中Res r 什么意思 啊作者: tanlei200620 时间: 2012-2-25 04:03
private Res r ; 这是一条声明语句,加上 private 是怕外界随便修改 这个引用,因为上述两个线程的锁对象 必须是一个对象才能 实现相互通信,这也是不(Res r =new Res() )的原因。后面的 Input(Res r)
{
this.r = r;
}
语句块的作用就是把InputOutputDemo的main放中定义的Res类对象 r 赋值到 Input 对象中,也必须赋值到Output 对象中才实现相互通信。
private Res r ; 不建议这样写,因为容易出异常,通常都是声明的时候 一起赋值,可以改进为 private Res r = null; 切记作者: 沈样 时间: 2012-2-25 08:18
我觉得这边写这个是为了控制外部对内部的访问,把不要暴露出去的全部写private作者: 朱皓 时间: 2012-2-25 08:24
private Res r ; 这是一条声明语句,这样定义,而不这样private Res r =new Res() 是为了不创建新的对象,而在主函数里面创建,使两个线程公用一个资源
private Res r ;这个的目的就是为了拿到主线程创建的资源而设置的引用
Input(Res r)
{
this.r = r;
}
这个就是通过构造函数把资源给input这个线程 作者: 许圣建 时间: 2012-2-26 02:23
老东西了啊,你见过这个吧:
tanlei200620 发表于 2012-2-25 04:03
private Res r ; 这是一条声明语句,加上 private 是怕外界随便修改 这个引用,因为上述两个线程的锁对象 ...
兄弟 能不能在讲讲啊 我还是不大理解啊作者: 许圣建 时间: 2012-2-26 18:20
我没从头看,就从主函数说吧:
public static void main(String[] args)
{
Res r = new Res();//因为希望in和out是同一个资源对象,所以在这里创建一个对象
Input in = new Input(r);//将资源对象r分别传递给新建的in,out对象,这样这两个对象就可以操作r了
Output out = new Output(r);//面向对象下,能执行操作的是对象,
//对象要操作别个对象就只能先拿到引用,要么自己建一个新的,要么接收一个别人建好的
Thread t1 = new Thread(in);//显然这里in,out都是Runnable接口的子类对象
Thread t2 = new Thread(out);//in,out中都实现(覆写)了run方法