12. Object Pool模式

场景

一台机器有20个对外的TCP/IP端口,当请求超过20个时,多余的请求就会等待,直到有空缺的端口出现。当一个端口出现故障的时候,自动切换到一个新的端口,没有端口空闲则等待。

经验丰富的王叔叔面对这样的需求,想也没想就给出了答案。

“建立一个端口池,对所有的端口进行管理,每个端口都是一个对象。这样就不存在对象被销毁和创建的代价了。”

“同时,我们还要做好对象的分发工作,避免因为资源竞争而导致死锁。”

总结

意图:在创建对象比较昂贵,对象数量有限制,需要管理对象的重用。
实现:如果可以创建的对象数量有限,或者池的大小有限制,可以使用一个数组来实现。如果只有一个,就可以结合singleton模式来实现。
带来的问题:

  1. 因为资源竞争而导致死锁
  2. 创建和销毁对象的代价是不是大于对象池的维护。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,887评论 1 32
  • 在一个方法内部定义的变量都存储在栈中,当这个函数运行结束后,其对应的栈就会被回收,此时,在其方法体中定义的变量将不...
    Y了个J阅读 9,895评论 1 14
  • layout: posttitle: 《Java并发编程的艺术》笔记categories: Javaexcerpt...
    xiaogmail阅读 11,141评论 1 19
  • 马上就要2018春节了,这块不长不短的集中时间我打算怎么度过呢? 走亲,访友,一家大小逛吃逛吃?陪家人朋友无可厚非...
    kuohuforev_5d41阅读 1,598评论 2 0
  • 我之前做销售,工作压力很大,生活饮食都不规律,身体一下子增加到140多斤,整个人看起来有肿的感觉,和以前我比起来,...
    瘦瘦才好看阅读 1,283评论 0 0

友情链接更多精彩内容