我现在的做法是,有心连接进来,开新线程处理
可如果有1万个同时访问,这样可能不太行吧,有什么其他办法解决吗s = ss.accept();
new execute().start(); //有新连接进来,开新线程处理public class execute extends Thread { public void run() {
try {
inStream = new DataInputStream(s.getInputStream());
//业务逻辑
}
catch(IOException e) {
e.printStackTrace();
}
}
}
可如果有1万个同时访问,这样可能不太行吧,有什么其他办法解决吗s = ss.accept();
new execute().start(); //有新连接进来,开新线程处理public class execute extends Thread { public void run() {
try {
inStream = new DataInputStream(s.getInputStream());
//业务逻辑
}
catch(IOException e) {
e.printStackTrace();
}
}
}
解决方案 »
- 俺问个超级幼稚的问题,一个串里有个比较字符的表达式如何判断
- 数据库索引问题
- Quartz定时器
- http://bbs.educity.cn/xch/from.asp?id=144&wh=cdwaterman
- HibernateCallback 问题--请高手花一分钟指点
- Hibernate UserType测试程序问题:修改数据失败
- 问
- 无状态sessionbean调用现有的entitybean时将如何配置ejb-jar.xml和weblogic-ejb-jar.xml?(jb+wl开发)
- JBoss与JBuilder7联合开发的初级问题:如何把CMP BEAN 与实际的表联系起来
- 进来看看,各位。
- 请教分页查询有什么好方法计算总页数?
- Glassfish MyEclipse 启动问题
线程池一般按连接先后进行顺序处理。
线程池的使用,一般是基于 CPU/IO 处理速度有限制。比如同时处理 500 个,平均相应时间 5 秒。同时处理 5000 个,平均 50 妙,就会让每个用户都不满意。
与其这样,还不如让先连接的用户正常使用,后连接的用户就傻等吧。这样至少有一部分用户满意。
当然,如果你使用32位的java,那么你的应用就惨了。
如果是64位的,128G内存,你这点小问题是很轻松解决了。 那么多CPU,那么多内存,你怕啥。那时候,核心问题是【带宽】了,你的100M网卡是不行的喽。如果做分布式,或者负载均衡,这个就是另外一个问题了。
可以从业务处理的效率,线程池等多方面考虑优化.另外如果是长连接,估计就要采用集群的方式来处理了,前端可以增加一个LVS,这样用户的连接感觉不出很多服务器,只感觉有一个IP和端口.