作者: 任奇 时间: 2012-1-28 23:17
去看看main函数:
Res r = new Res();
Input in = new Input(r);
Output out = new Output(r);
Thread t1 = new Thread(in);
Thread t2 = new Thread(out);
明白了吧。两线程处理的是同一对象。作者: 张伟~ 时间: 2012-1-29 23:37
楼主不厚道,代码不写全。
不是多个构造函数就能操作同一数据了,关键看后面代码
Resource r = new Resource ();
Input in = new Input(r);
Output out = new Output(r);
两个线程操作的是同一资源,但是如果Input ,Output 两个类中没有这个构造函数的话
private Resource r;
public Input(Resource r)
{
this.r=r;
}
你后面建立in和out两个对象的时候,你能把r传的进去吗。
而像你右边两个类中都new一个Resource的话那明显是两个对象了,操作的也就不是同一资源了。作者: 苏格拉底的弟子 时间: 2012-1-30 22:43
楼主, 你需要注意的是这2各部分的代码
1 : Resource r = new Resource ();
Input in = new Input(r);
Output out = new Output(r); //往里面传的是不是同一个r对象
2 : Resource r = new Resource (); //如果各自都new出来一个新的对象,那操作的肯定不是同一个对象了
所以我们应该向左边一样在类中定义一个 Resource r , 这样传进来的对象肯定能够保证是同一个对象了