A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何创 中级黑马   /  2012-12-30 16:11  /  1298 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 何创 于 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 为什么是可以共享的?他们是在两个类里面啊。。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

7 个回复

倒序浏览
打错了 这是           Output(Res s )
                 {
                   this.s=s;
                 }

}
是Output的构造函数、
回复 使用道具 举报
这只是说 Input 和Output类 都有 属性Res s;

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

这样就 共享了 Res s;

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
Res s是在两个线程类中共享
两个线程接替操作这一个S,所以必须是共享的呀,
如果不是共享,等于一个线程操作一个s,另一个线程操作另一个s,这样就出现了安全隐患
回复 使用道具 举报
在内存中Res对象只存在一个,Input,Output中的Res s属性也指向它

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
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 变为共享资源。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
何创 中级黑马 2012-12-31 17:15:47
7#
王少雷 发表于 2012-12-30 16:44
class Res{
        private String name;
        private String age

你的意思是 只要是Res的对象都会共享其中的资源是吗?? 都属于共享资源是吗?
回复 使用道具 举报
何创 中级黑马 2012-12-31 17:16:31
8#
黄锦成 发表于 2012-12-30 16:39
在内存中Res对象只存在一个,Input,Output中的Res s属性也指向它

谢谢你的回复 对我有帮助。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马