请教一个“Java的传地址”问题..

cjcocjcoco 2013-10-10 07:02:17
高手,您好:
我在写一个因特网聊天工具,其中涉及到了这个技术环节:
我在我的S端的主框架类中,进行了“传用户的Socket对象的写出流DataOutputStream类的对象dops的地址进入用户所申请的各个功能的子线程中进行处理”..
现在从逻辑上,我初步推测:
传入子线程的DataOutputStream类的实体,是为“某一个用户的与S端的连接的水管的地址”.
这个DataOutputStream类,这个水龙头,相对于这位用户的多个功能来说,是为:“不同的功能向Socket水管注水的"水龙头"”,这里的S端的同一位用户的不同功能线程,如果采用上述我打算进行的代码实现方案的话,会有:“不同的已经加了功能标记符的功能线程向C端写入数据的服务”“出现数据混淆”。
我打算借助synchronized关键字将要传入子线程的DataOutputStream dops = new DataOutputStream(s.getOutputStream());语句所从用户在S端拿到的用户的Socket对象的地址的“写出流”这个即将传入到子线程的构造方法体内的参数,进行synchronized关键字”的加锁处理.
让我的程序,能够在面对“某一位用户的”“多个并发进行的功能的数据的处理”时,能够在S端进行“让本用户的各个功能相互同步”.
但是,这样做的代价是:
让每一位连接到我的S端服务器的用户的“并发线程服务”,在S端,这个环节上,做成了“需要排队逐个完成”的并发功能的服务质量.
如果不进行sychronized关键字对于上述的DataOutputStream类型的对象的加锁限制的话,又会出现:
整个S端的系统所提供的针对每一位用户的“多线程”的并发计算的质量的服务,变成“需要一项一项进行”的实际上的通信方式..
希望得到高手的点拨:
我的这个系统的服务端的代码,应该采用上面的哪种结构能满足我的系统的开发需求的预期目标...?
如果采用其他的结构设计的话,并且,我希望能够让C端采用Socket连接我的S端的ServerSocket进行我的开发业务需求的实现的话..
我应该进行什么结构的代码设计,能够让我的开发需求,被满足...?
谢谢高手的相助!!
一百分奉上!!
一位日日夜夜向着理想奔跑的筑梦者
2013年10月10日星期四下午19点正
...全文
434 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
cjcocjcoco 2013-10-11
  • 打赏
  • 举报
回复
自顶一个!! Mark!
cjcocjcoco 2013-10-11
  • 打赏
  • 举报
回复
高手,我碰到的问题的“普通话版”是:
如果进行了“dops对象传入子线程的构造方法”的方案的实施的话...
会有:
如果不给dops对象加“同步锁synchronized或者Lock”关键字的话,会有:
多个并行计算的可能为用户同时选择的功能线程,向着“dops对象所拿到的水管”进行数据写入.
每一个数据的写入操作,从机器码上来看的话,都是:
“0和1的数字序列”.
肯定会造成:“写给系统客户的某一个线程中的服务请求的数据,"发生多条信道数据的混淆”,影响系统的“功能开发的基本实现”.
但是,如果采用了同步关键字进行修饰的话,会造成:
整个系统的服务,本身是向用户提供了“并行计算的保证的”.
但是,采用了面向用户的水管进行的流的同步作用之后,会出现:
用户的“并行计算的系统服务承诺”,变成:
需要用户进行:
“先传文件”然后“等”之后“再写字”.
的步骤来进行完成..
费时又费力...
希望高手,CSDN论坛中的版主,能够将弟我的这个系统的这个字段的开发需求的解决方案,做一下指导...
并且,我的S端的代码主框架的结构为:

(图一)

(图二)

(图三)
希望得到高手在我的项目中的已经实施了的代码框架的基础上,所能够进行的“做出能够满足每一个系统用户通信节点进行多线程功能申请的S端的功能的代码设计”的实现方案的指导.
希望高手能够尽快帮助我.
谢谢高手!!
cjcocjcoco 2013-10-10
  • 打赏
  • 举报
回复
补充一句: 我在我的S端的代码结构为:
System.out.println("进入try");
	       System.out.println("进入try1");
	       DataInputStream dips1 = new DataInputStream(so1.getInputStream());
	       DataOutputStream dops12 = new DataOutputStream(so1.getOutputStream());
	       System.out.println("进入try2");
	       buffertemp = dips1.readUTF();
	       System.out.println("进入try3");
               System.out.println("C_port_connect"+"I'm_Doctor_From_BeiJing");
	       System.out.println(buffertemp);
	       buffer = buffertemp.split("[#]");
	       System.out.println("S:"+buffer);
	       condition = Integer.parseInt(buffer[0]);
	       System.out.println("S:"+condition);
	       MyInfo = buffer[1];
	       System.out.println(MyInfo);
	       MySysRole = buffer[2]; 
	       MyRole = buffer[3];
	       MySysNum = buffer[4];
这里的代码,在第4行代码里,是进行了:“DataOutputStream dops12 = new DataOutputStream(so1.getOutputStream());”这条语句的书写的... 而非在上面的代码行里进行了“DataOutputStream dops = null;”,的DataOutputStream dops的对象的代码结构实现. 这样的代码结构,能够让每次的同一位的用户连接,“为一个Socket水管”“多个DataOutputStream流的水龙头”. 这样的结构,能够让我的代码:“每一位用户的Socket服务请求”,都是用了“不同的写出流”,进行向Socket水管写出,的动作执行的.. 希望高手能够注意一下我的这个结构设计... 谢谢高手!! 在线等待高手的点拨!!

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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