关于Runnable数据共享的小疑问

ggshelley 2012-11-23 02:53:53
假设有如下语句:
定义类:
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)共享吗?
...全文
102 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ggshelley 2012-11-23
  • 打赏
  • 举报
回复
引用 3 楼 jtbreeze 的回复:
引用 2 楼 ggshelley 的回复: 引用 1 楼 zxhcloth 的回复:如果Pro和Con对应的构造函数是将i对象传给他们内部的ii对象的话,那么pro和con两个对象里的ii都是指向i,也就是说他们是一样的。 如果你认为他们一样就是“共享”的话,那么(Info ii)共享 Pro和Con的构造函数一样的,那是不是我在main函数里改为: Info i = new In……
ok
jtbreeze 2012-11-23
  • 打赏
  • 举报
回复
引用 2 楼 ggshelley 的回复:
引用 1 楼 zxhcloth 的回复:如果Pro和Con对应的构造函数是将i对象传给他们内部的ii对象的话,那么pro和con两个对象里的ii都是指向i,也就是说他们是一样的。 如果你认为他们一样就是“共享”的话,那么(Info ii)共享 Pro和Con的构造函数一样的,那是不是我在main函数里改为: Info i = new Info(); ……
嗯,是这样理解的~
ggshelley 2012-11-23
  • 打赏
  • 举报
回复
引用 1 楼 zxhcloth 的回复:
如果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传入,所以他们不共享,能不能这么理解?
zxhcloth 2012-11-23
  • 打赏
  • 举报
回复
如果Pro和Con对应的构造函数是将i对象传给他们内部的ii对象的话,那么pro和con两个对象里的ii都是指向i,也就是说他们是一样的。 如果你认为他们一样就是“共享”的话,那么(Info ii)共享

58,441

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧