public class ObjectPool {
private ParameterObject paraObj;//该对象池的属性参数对象
private Class clsType;//该对象池中所存放对象的类型
private int currentNum = 0; //该对象池当前已创建的对象数目
private Object currentObj;//该对象池当前可以借出的对象
private Vector pool;//用于存放对象的池
public ObjectPool(ParameterObject paraObj, Class clsType) {
this.paraObj = paraObj;
this.clsType = clsType;
pool = new Vector();
}
public Object getObject() {
if (pool.size() <= paraObj.getMinCount()) {
if (currentNum <= paraObj.getMaxCount()) {
//如果当前池中无对象可用,而且已创建的对象数目小于所限制的最大值,就利用
//PoolObjectFactory创建一个新的对象
PoolableObjectFactory objFactory =PoolableObjectFactory.getInstance();
currentObj = objFactory.create Object (clsType);
currentNum++;
} else {
//如果当前池中无对象可用,而且所创建的对象数目已达到所限制的最大值,
//就只能等待其它线程返回对象到池中
synchronized (this) {
try {
wait();
} catch (InterruptedException e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
currentObj = pool.firstElement();
}
}
} else {
//如果当前池中有可用的对象,就直接从池中取出对象
currentObj = pool.firstElement();
}
return currentObj;
}
public void returnObject(Object obj) {
// 确保对象具有正确的类型
if (obj.isInstance(clsType)) {
pool.addElement(obj);
synchronized (this) {
notifyAll();
}
} else {
throw new IllegalArgumentException("该对象池不能存放指定的对象类型");
}
}
}
分享到:
相关推荐
本文将详细探讨Java对象池技术的基本原理及其具体实现方式。 #### 基本概念 在开始之前,我们先明确几个基本概念: - **对象池**:一种存储和管理对象的容器,这些对象可以被重复使用而不是每次都需要重新创建。 ...
《揭秘Java虚拟机-JVM设计原理与实现》这本书深入探讨了Java虚拟机(JVM)的工作原理及其在Java编程中的核心地位。Java虚拟机是Java平台的核心组成部分,它负责执行字节码,为开发者提供了跨平台的运行环境。以下是...
下面我们将详细讨论Java对象XML串行化及其实现方法。 首先,要实现Java对象到XML的转换,我们需要一个库或框架来帮助我们完成这个任务。XStream是一个流行的Java库,它可以轻松地将Java对象转换为XML,反之亦然。在...
本篇文章将深入探讨如何使用Java实现一个词法分析器,并针对描述中的任务,分析名为"cifafx.txt"的程序文件。 首先,我们要理解词法分析的基本概念。词法分析是编译器设计的第一步,它的目标是将源代码文本分解成...
本文将详细介绍Java版本的数据库连接池的实现方式及其内部原理。数据库连接池是一种常见的优化技术,它通过复用预分配好的数据库连接资源来减少数据库连接创建与释放过程中的时间开销,从而提高系统性能。对于大型...
标题中的“对象池工厂(微型IOC容器)”是一个关于软件设计模式和轻量级依赖注入框架的概念。...对于开发者来说,理解并掌握对象池工厂及其背后的原理,对于优化系统资源管理和提高软件性能至关重要。
首先,Java对象到Map的转换是通过反射机制实现的。反射允许程序在运行时检查类的信息,并能够动态地调用方法和访问字段。插件会遍历对象的所有属性,将它们的键(属性名)和值(属性值)放入Map中,这样便于数据的...
本文将深入探讨Java中的Socket连接池及其实现原理。 首先,理解Socket的基础知识至关重要。Socket是网络编程的基本接口,它提供了进程间通信(IPC)的能力,尤其是在互联网上不同主机间的通信。Java中的Socket类和...
本篇文档将深入探讨数据结构的基本原理及其在Java中的实现方式。 一、数组 数组是最基础的数据结构,它是一系列相同类型元素的集合,通过索引进行访问。在Java中,数组可以通过声明数组变量并初始化来创建,例如: ...
### 基于Java的网格计算框架及其实现 #### 一、引言 随着信息技术的飞速发展,网格计算作为一种新型的分布式计算模式,在处理大规模科学计算与工程计算问题时展现出巨大的潜力。本文旨在探讨一种基于Java语言的...
本文将详细探讨Java中数据库连接池的工作原理及其关键技术点。 #### 二、数据库连接池基本概念及原理 **1. 资源池设计模式** 资源池设计模式是一种经典的软件设计模式,用于解决资源频繁分配与释放带来的性能瓶颈...
本文主要探讨了类装载的原理、实现方式及其在实际应用中的作用。 首先,类装载的过程分为三个主要阶段:装载、链接和初始化。装载阶段涉及寻找并导入类或接口的二进制数据,通常由类装载器(ClassLoader)执行。...
这三种代理模式各有其特点和应用场景,下面将详细介绍它们的工作原理和实现方式。 ### 静态代理 静态代理是最基础的代理形式,它通过创建一个代理类来间接调用目标对象的方法。在静态代理中,代理类和目标类通常...
### 面向对象原理与Java实践课程实验-对象和类 #### 实验目的与要求 本实验的主要目的是让学生深入理解面向对象编程的核心概念之一——类与对象,并通过实际编程来掌握这些概念的具体应用。实验重点包括: 1. **...
它能够将Java对象映射到数据库表及其字段,并且可以自动处理SQL语句的生成与执行,极大地简化了数据访问层的开发工作。 - **主要优势**: - **简化数据库访问**:通过配置文件或注解的方式,减少大量的SQL语句编写...
本文将深入探讨Java GC的工作原理,包括GC的基本概念、增量式GC的特点及其应用、分代收集的概念与实践等方面。 #### 二、GC基本原理 **2.1 GC定义及必要性** GC是一种自动内存管理机制,用于追踪和清理不再使用的...
### Java规则引擎的工作原理及其实际应用 #### 规则引擎技术概述 规则引擎技术作为一种灵活且高效的业务逻辑管理工具,在现代软件开发中扮演着至关重要的角色。尤其在Java社区,规则引擎的应用越来越广泛,它不仅...
"链表的原理及Java实现代码示例" 链表是一种基本的数据结构,它的实现原理不同于数组。链表的优点是插入和删除操作效率高,而缺点是循环遍历时效率不高。Java中使用的LinkedList的实现原理就是链表。 单向链表的...