如何创建处理器池之享元模式
来源:互联网 发布:115网盘岛国资源 淘宝 编辑:程序博客网 时间:2024/06/06 21:05
最近在看tomcat源码的时候发现里面有很多经典设计模式的运用案例,正好趁此机会熟悉一下设计模式,为了保证代码原味性,就直接复制粘贴了,以下代码不能运行,但是能看明白,可以用来学习和借鉴。
相关设计模式:享元模式
//最少处理器个数protected int minProcessors = 5;//最大处理器个数private int maxProcessors = 20;//当前处理器个数private int curProcessors = 0;//用于存放使用完的处理器private Stack<Object> processors = new Stack<Object>();//用于存放新创建的处理器private Vector<Object> created = new Vector<Object>();/** * 处理器使用完以后将处理器加入处理器池中, * @author fjding * @date 2016年4月18日 下午10:04:54 * @param processor * =================Modify Record================= * @Modifier @date @Content * fjding 2016年4月18日 下午10:04:54 新建 * */ private void recycle(HttpProcessor processor) { processors.push(processor); } // /** * 通过该方法可以获得处理器池中的线程 * @author fjding * @date 2016年4月18日 下午10:05:59 * @return * =================Modify Record================= * @Modifier @date @Content * fjding 2016年4月18日 下午10:05:59 新建 * */ private HttpProcessor createProcessor() { synchronized (processors) { //池中有处理器可用 if (processors.size() > 0) { return ((HttpProcessor) processors.pop()); } //如果处理器池中没有可以用的处理器,则判断当前的处理器个数(此时池中是空的)是否大于设置最大处理器个数, if ((maxProcessors > 0) && (curProcessors < maxProcessors)) { //没有则创建 return (newProcessor()); } else { //如果处理器最大个数被设置为-1,则要多少个处理器就创建多少个,不受限制 if (maxProcessors < 0) { return (newProcessor()); } else { return (null); } } } } /** * 创建一个新的处理器 * @author fjding * @date 2016年4月18日 下午10:25:36 * @return * =================Modify Record================= * @Modifier @date @Content * fjding 2016年4月18日 下午10:25:36 新建 * */ private HttpProcessor newProcessor() { //当创建一个处理器,则当前处理器标记加1,给改处理器设置了个名字,线程也是这么做的 HttpProcessor processor = new HttpProcessor(this, curProcessors++); if (processor instanceof Lifecycle) { try { ((Lifecycle) processor).start(); } catch (Exception e) { log("newProcessor", e); return (null); } } created.addElement(processor); return (processor); }
0 0
- 如何创建处理器池之享元模式
- 模式之享元模式
- 泡妞之享元模式
- 设计模式之享元
- 设计模式之享元
- 设计模式 之 享元
- 设计模式之享元
- 设计模式之享元
- GOF之享元模式
- learning之享元模式
- 设计模式之Flyweight享元模式
- 设计模式之享元模式
- 设计模式之享元模式
- 设计模式之享元模式
- 设计模式之享元模式
- 设计模式之享元模式
- 设计模式之享元模式
- 结构模式之享元模式注解
- [C语言][LeetCode][61]Rotate List
- 如何查看 SQL Server 占用内存
- weblogic忘记管理密码,无法启动服务,重置密码
- linux文件系统inode
- 安卓Banner轮播图效果源码
- 如何创建处理器池之享元模式
- 如何脚本备份各个分库
- java 二叉树遍历
- ThinkPHP if条件下做判断注意的地方。
- studyphp环境软件Nginx隐藏index.php和Pathinfo模式配置例子
- Tomcat类加载器架构
- 【<meta name="" content=">】的作用
- (转)Android N 开发者预览版 2 发布
- LeetCode 第 338 题 (Counting Bits)