当前位置: 代码迷 >> Eclipse >> 关于Runnable数据共享的小疑点
  详细解决方案

关于Runnable数据共享的小疑点

热度:53   发布时间:2016-04-23 02:00:32.0
关于Runnable数据共享的小疑问
假设有如下语句:
定义类:
class Info
{
    private  int a;
    ...
}
定义两个线程:
class Pro implements Runnable
{
    private Info ii=null;
    ...
}

class Con implements Runnable
{
    private Info ii=null;
    ...
}

测试程序main():
{
    ...
    Info i = new Info();
    Pro pro = new Pro(i);
    Con con = new Con(i);
    new Thread(pro).start();
    new Thread(con).start();
    ...
}
想问一下:有线程实例化的对象pro和con中他们的属性:(Info ii)共享吗?

------最佳解决方案--------------------
如果Pro和Con对应的构造函数是将i对象传给他们内部的ii对象的话,那么pro和con两个对象里的ii都是指向i,也就是说他们是一样的。
如果你认为他们一样就是“共享”的话,那么(Info ii)共享
------其他解决方案--------------------
引用:
引用:如果Pro和Con对应的构造函数是将i对象传给他们内部的ii对象的话,那么pro和con两个对象里的ii都是指向i,也就是说他们是一样的。
如果你认为他们一样就是“共享”的话,那么(Info ii)共享
Pro和Con的构造函数一样的,那是不是我在main函数里改为:
    Info i = new Info();
   ……


嗯,是这样理解的~
------其他解决方案--------------------
引用:
如果Pro和Con对应的构造函数是将i对象传给他们内部的ii对象的话,那么pro和con两个对象里的ii都是指向i,也就是说他们是一样的。
如果你认为他们一样就是“共享”的话,那么(Info ii)共享

Pro和Con的构造函数一样的,那是不是我在main函数里改为:
    Info i = new Info();
    Info ii = new Info();
    Pro pro = new Pro(i);
    Con con = new Con(ii);
那样对象pro中的(Info ii)和con中的(Info ii)由于是由不同的对象i和ii传入,所以他们不共享,能不能这么理解?
------其他解决方案--------------------
引用:
引用:
引用:如果Pro和Con对应的构造函数是将i对象传给他们内部的ii对象的话,那么pro和con两个对象里的ii都是指向i,也就是说他们是一样的。
如果你认为他们一样就是“共享”的话,那么(Info ii)共享
Pro和Con的构造函数一样的,那是不是我在main函数里改为:
    Info i = new In……

ok
  相关解决方案