Java网络编程(读书笔记)

部分片断:web

  早期web服务器因为Http连接短暂而有所掩盖,因为web页面和嵌入式的图片通常很小(至少与一般经过FTP获取软件包要小不少),因为web浏览器在获取各个文件后挂起链接,而不是一次保持数分钟或者几小时的连姐姐,因此web用户不会像FTP用户那样对服务器施加太多的负担,不过,随着使用量的增加,web服务器性能降低,(解决这种问题至少有两种解决方案)浏览器

第一种:重用进程,而不是建立新的进程,服务器启动,就建立固定的数量的进程(好比300个)来处理请求,入栈请求放入一个队列中,每一个进程从队列中删除一个请求,为这个请求服务。这样的好处避免创建和销毁进程的全部的开销。服务器

第二种:使用轻量级的线程来处理连接,虽然每一个单独的进程都有本身的一块的内存,可是在线程在资源的使用上更加的轻松,由于他们会共享内存。利用线程池加大请求处理;异步

(线程的替代方法)当咱们的一个应用同事须要数千个持续很长时间的连接,就要考虑异步I/O而不是线程,选择权支持一个线程查询一组socket,找出那些sockety已经准备就绪能够读写数据,这种状况基于通道和缓冲器来设计I/O而不是流。可是分解又会给相应的设计的问题,特备是在一致性方面。增长了程序的复杂性,不一样的线程必须很是注意当时使用的资源。通常来说,每一个线程只有在确保资源不会改变或者他有独占访问权才可使用某个资源,不过两个线程太多当心,每一个线程都等待对资源独占访问权,却永远得不到,这会致使死锁。socket

相关文章
相关标签/搜索