即时通讯服务器中的线程问题 Angent angent = new Angent(socket);这个是干什么的,不见你使用啊! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 哦,看到了,应该说你这样是可以的!没有问题.但你既然每个连接都建立了一个ServerThread ,为什么还要使用队列呢?还不如直接用线程呢?使用队列的目的就是为了减少线程的建立,让一个线程处理多个任务.在你的程序里没有看到这一点啊.当连接的用户超过操作系统所容纳的线程数目时,程序不会停留在"@@@"处. 会在serverthread.start();处抛出异常. 程旭兄:这是飞思科技的一本<java tcp/ip>上的聊天室实例;我也很费解.你的意思我是这么理解的有两种解法:1 不建立队列,直接创建线程进行服务;(这样作的话,当连接很多时,是否会出现)2 建立队列,用线程反复处理堆栈弹出的Agent我没有理解错误把******************我对这个程序的理解是这样的,请指教:当很多连接(Agent)要在很短时间内创建时,服务器不是马上处理,而是先放到一个堆栈内,然后调用线程一个一个往外取.如果不这样做,而直接让线程进行服务的话,可能出现线程创建过多而死机.基于这种思想,我这么该动一下好不好ServerSocket serversocket = new ServerSocket(1111, 20); while(listening)//服务器正在监听时 { //等待客户的连接请求,一旦连接到来: Socket socket = serversocket.accept(); //实例化一个代理,实现服务器与客户端之间的解藕,它在服务器面前就是客户端 Angent angent = new Angent(socket); //@@@实例化一个服务线程?????????? ServerThread serverthread = new ServerThread(); //将客户代理推入同步栈???????? theStack.push(angent); //启动服务线程 if(线程的数量小于100) { serverthread.start(); } } //关闭服务 serversocket.close(); InteliIM 开放源代码项目招人了!简 介: InteliIM 是一款基于 Microsoft.NET 平台的企业内部即时通讯软件。她功能强大,操作简便,安装程序体积小,对系统配置要求低,兼容 .NET Framework 1.1。 开源项目主页: http://cosoft.org.cn/html/osl/projects.php?group_id=19789 我的(软件)主页: http://plissoft.bigwww.com (由于 DNS 问题,有时,有地可能连接不上,深表遗憾!) 我的 MSN: [email protected] (已拥有或计划即将拥有的)特点: * 美观的用户界面 * 完善的用户、消息、服务管理 * 支持两人对话 * 支持多人会议 * 支持在线硬盘 * 支持文本广播 * 支持可定制自动/人工交互式服务 * 支持 MSN Messenger 服务 * 支持 QQ 服务 热诚欢迎对开发 .NET 即时通讯软件有兴趣并且有一定相关开发经验的人员以及美工、网站设计人员和有一定专长的朋友参与! 想参与该项目的朋友,请发电子邮件给我,并简单介绍一下自己。-------------------开源项目需要兴趣、热情和耐心 ------------------- zhangyu6050(我是猪) 你说的思想是对的,但实现起来会有很多的问题的,我自己就在这上面碰到了很多的问题现在使用 JDK1.5 的 java.util.concurrent 包,可以很好的处理这个问题了!我使用后发觉 java.util.concurrent 确实好用,屏蔽了很多的多线程的问题. Swing 如何更新界面? 求问打印问题。 我的物理地址两天变了俩次,求解!!! Person对象有个String类型的属性kind.现在要排序Person,按kind的顺序排,应该如何操作? java有生成安装文件的工具吗? 如何将两字节数组耦合? ??高手指点一下 深圳易思博公司是如此的无耻。。。。。 环境变量问题 急!! 请问以下输入流的错误怎么解决? 我把JTextArea放入JScrollPane中实现垂直滚动功能,但是为什么每次滚动的时候,滚动条总是在上方?如何调整使滚动条再下方啊 为什么啊??/结果大失所望
你的意思我是这么理解的
有两种解法:
1 不建立队列,直接创建线程进行服务;(这样作的话,当连接很多时,是否会出现)
2 建立队列,用线程反复处理堆栈弹出的Agent
我没有理解错误把
******************
我对这个程序的理解是这样的,请指教
:当很多连接(Agent)要在很短时间内创建时,服务器不是马上处理,而是先放到一个堆栈内,然后调用线程一个一个往外取.如果不这样做,而直接让线程进行服务的话,可能出现线程创建过多而死机.基于这种思想,我这么该动一下好不好
ServerSocket serversocket = new ServerSocket(1111, 20);
while(listening)//服务器正在监听时
{
//等待客户的连接请求,一旦连接到来:
Socket socket = serversocket.accept();
//实例化一个代理,实现服务器与客户端之间的解藕,它在服务器面前就是客户端
Angent angent = new Angent(socket);
//@@@实例化一个服务线程??????????
ServerThread serverthread = new ServerThread();
//将客户代理推入同步栈????????
theStack.push(angent);
//启动服务线程
if(线程的数量小于100)
{
serverthread.start();
}
}
//关闭服务
serversocket.close();
InteliIM 是一款基于 Microsoft.NET 平台的企业内部即时通讯软件。她功能强大,操作简便,安装程序体积小,对系统配置要求低,兼容 .NET Framework 1.1。 开源项目主页:
http://cosoft.org.cn/html/osl/projects.php?group_id=19789 我的(软件)主页:
http://plissoft.bigwww.com
(由于 DNS 问题,有时,有地可能连接不上,深表遗憾!) 我的 MSN:
[email protected] (已拥有或计划即将拥有的)特点:
* 美观的用户界面
* 完善的用户、消息、服务管理
* 支持两人对话
* 支持多人会议
* 支持在线硬盘
* 支持文本广播
* 支持可定制自动/人工交互式服务
* 支持 MSN Messenger 服务
* 支持 QQ 服务 热诚欢迎对开发 .NET 即时通讯软件有兴趣并且有一定相关开发经验的人员以及美工、网站设计人员和有一定专长的朋友参与! 想参与该项目的朋友,请发电子邮件给我,并简单介绍一下自己。-------------------开源项目需要兴趣、热情和耐心 -------------------