黑马程序员技术交流社区
标题:
求教大神。。
[打印本页]
作者:
張帅
时间:
2013-9-3 08:42
标题:
求教大神。。
class Resource
{
String name;
String sex;
boolean flag = false;
}
class Input implements Runnable
{
private Resource r;//1.
我在此处建立一个引用。和下面的Output类中建立的是同一个引用? 也就是说Input和Output共
用的一个资源吗?这两个类可以都这样用吗 Resource r = new Resource();?
Input (Resource r)
{
this.r=r;//2.在此初始化的内容是 this.name = name; this.sex = sex吗,也就是 说 this.r=r是不是与我前面我说的这两句相等?
{:soso_e103:}
}
public void run()
{
}
}
class Output implements Runnable
{
private Resource r;
Output()
{
}
}
class TestDemo
{
public static void main(String args[])
{
Resource r = new Resource();
new Thread(new Input(r)).start();
new Thread(new Output(r)).start();
}
}
作者:
张聪珉
时间:
2013-9-5 20:22
第一个问题,input和output里面的r分别是各自的引用,你new了一个对象作为参数传给这input和output这两个类,创建两个线程对象时,里面的引用r指向了同一个对象,此时数据就会被共享,如果run方法里面操作到了共享数据就有可能产生数去不安全问题,那么就需要实现同步,
第二个问题,初始化时是把r这个对象作为参数传入,而不是name和sex,你可以理解为这个对象里面有name和sex,你在new Resource 并没有给这个对象的属性赋值,所以属性值初始化时会是默认值,至于默认值是什么,根据属性的数据类型,比如int默认是0,String默认是null
希望有助于你理解
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2