黑马程序员技术交流社区

标题: 关于线程通信 [打印本页]

作者: 何创    时间: 2012-12-30 16:11
标题: 关于线程通信
本帖最后由 何创 于 2012-12-31 17:30 编辑

class Res{
        private String name;
        private String age
        
        }
class Input Implement Runnable
{
        Res s;

        Input(Res s )
        {
           this.s=s;
        }
        

}
class Output Implement Runnable
{
        Res s;
        Input(Res s )
                {
                   this.s=s;
                }

}
这是线程通信里面的一段代码。这里需要一个共享资源。为什么 这个Res s 为什么是可以共享的?他们是在两个类里面啊。。
作者: 何创    时间: 2012-12-30 16:12
打错了 这是           Output(Res s )
                 {
                   this.s=s;
                 }

}
是Output的构造函数、

作者: 王玮    时间: 2012-12-30 16:22
这只是说 Input 和Output类 都有 属性Res s;

当使用的时候  向这两个 类 传递 同一个 Res s;
例如:  
Res s =new Res();
Input in =new Input(s);
Output in =new Output(s);

这样就 共享了 Res s;


作者: 郭娇珍    时间: 2012-12-30 16:31
Res s是在两个线程类中共享
两个线程接替操作这一个S,所以必须是共享的呀,
如果不是共享,等于一个线程操作一个s,另一个线程操作另一个s,这样就出现了安全隐患
作者: 黄锦成    时间: 2012-12-30 16:39
在内存中Res对象只存在一个,Input,Output中的Res s属性也指向它
作者: 王少雷    时间: 2012-12-30 16:44
class Res{
        private String name;
        private String age
        
        }
class Input Implement Runnable
{
        Res s;

        Input(Res s )
        {
          this.s=s;
        }
        

}
class Output Implement Runnable
{
        Res s;
        Input(Res s )
                {
                  this.s=s;
                }

}
Res现在是一个类。。。里面定义了共享的分资源。
下面每个类中,分别定义 了RES 然后又构造本类的对象,目的就是为了让RES 变为共享资源。
作者: 何创    时间: 2012-12-31 17:15
王少雷 发表于 2012-12-30 16:44
class Res{
        private String name;
        private String age

你的意思是 只要是Res的对象都会共享其中的资源是吗?? 都属于共享资源是吗?
作者: 何创    时间: 2012-12-31 17:16
黄锦成 发表于 2012-12-30 16:39
在内存中Res对象只存在一个,Input,Output中的Res s属性也指向它

谢谢你的回复 对我有帮助。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2