Java网络编程(二)

Java网络编程(二)

这是本人学习Java过程中遇到的一些问题和解决方法,在此记录,方便本人查看,解决他人疑惑。


进程

早期的Internet虽然用户很少,但是却比现在更容易碰上超负荷的拥塞网站。问题不在于当时的机器不够强大,或者网络速度不够快,而在于当时的服务器实现技术太差。
那时大多数的FTP服务器会为每一个连接创建(fork)一个新的进程,也就是说当有100个并发用户意味着要处理100个额外的进程。进程是重量级的,所以当进程数过多时,服务器就会很快吃不消的。
同样早期的Web服务器也存在这个问题,不过由于http连接的短暂性而有所掩盖,由于Wen页面相对于FTP获取的软件包要小很多,所以Web用户不会像FTP用户那样对服务器施加太多负担。不过随着使用量的增长,Web服务器依然会性能下降。根本问题在于,Web服务器把每个新的连接和任务都当作一个单独的进程来处理,这种解决方案将无法扩展。
解决办法
- 重用进程
- 采用轻量级的线程代替进程

线程

线程是轻量级的,理论上,使用线程代替进程,可以让服务器的性能提升三倍。再结合使用可复用的线程池,在同样的硬件和网络链接条件下,服务器的性能提升九倍多!


线程的替代方法

  • 异步I/O

使用条件:如果一个应用同时需要数千个持续很长时间的连接,就要考虑异步I/O,而不是线程了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值