`

对象池、连接池、线程池

阅读更多

在绝大多数的JavaWeb的应用系统开发过程中,经常会听到或见到这样的三个专业名词:对象池、连接池、线程池。下面就这三个专业知识做一个简单的小结:

1.对象池

   对象池技术通常是在服务器端开发使用的技术,使用该项技术的主要原因是减少从头创建每个对象的系统开销,提高系统性能。其主要做法是:创建一个对象池,将一定数量的对象缓存到这个对象池中,需要使用时直接从对象池中取出对象,使用完后将对象扔回到对象池中即可,也就是说在激活对象时,它从池中提取。在停用对象时,它放回池中,等待下一个请求。

 

2.连接池

   连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。在实际应用开发中,特别是在WEB应用系统中,如果JSP、Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接、打开数据库、存取数据和关闭数据库连接等步骤,而连接并打开数据库是一件既消耗资源又费时的工作,如果频繁发生这种数据库操作,系统的性能必然会急剧下降,甚至会导致系统崩溃。数据库连接池技术是解决这个问题最常用的方法,在许多应用程序服务器(例如:Weblogic,WebSphere,JBoss)中,基本都提供了这项技术,无需自己编程,但是,深入了解这项技术是非常必要的。

   数据库连接池技术的思想非常简单,将数据库连接作为对象存储在一个Vector对象中,一旦数据库连接建立后,不同的数据库访问请求就可以共享这些连接,这样,通过复用这些已经建立的数据库连接,可以克服上述缺点,极大地节省系统资源和时间。

 

3.线程池

   线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值。超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。

分享到:
评论

相关推荐

    对象池&线程池&数据库连接池

    对象池、线程池和数据库连接池都是资源复用机制的实例,它们有效地解决了频繁创建和销毁对象带来的开销,提高了系统的效率。以下是对这些概念的详细解释: 1. **对象池**: 对象池是一种设计模式,它的核心思想是...

    基于C++实现的连接池、线程池、内存池、对象池项目源码含项目说明.zip

    基于C++实现的连接池、线程池、内存池、对象池项目源码含项目说明.zip ## CPP连接池 ### 关键技术点 MySQL数据库编程、单例模式、queue队列容器、C++11多线程编程、线程互斥、线程同步通信和 unique_lock、基于CAS的...

    线程池和mysql连接池的实现

    `main.cpp`文件通常是程序的入口点,它会实例化线程池和连接池对象,并调用相应的接口来执行任务和数据库操作。`Makefile`则包含了编译和链接这些源文件的规则。 总之,线程池和MySQL连接池是提高系统效率和资源...

    okhttp中连接池实现

    本文将深入探讨OkHttp中的连接池实现,包括连接对象的添加、移除机制以及其工作原理。 首先,我们需要了解什么是连接池。连接池是一种资源管理技术,用于存储和管理预先建立的网络连接,避免每次请求都创建新的TCP...

    工厂设计模式附加对象池说明

    比如,数据库连接池、线程池就是对象池的经典应用场景。 对象池的设计通常包括以下几个关键步骤: 1. 初始化池:设置池的大小,并创建相应数量的对象。 2. 获取对象:当需要对象时,首先检查池中是否有可用对象,...

    C++对象池源码示例

    对象池在游戏开发、数据库连接池、线程池等领域有着广泛应用。例如,在游戏编程中,频繁创建和销毁的游戏对象(如子弹、粒子效果等)可以通过对象池来高效管理,避免了大量的内存开销。在数据库连接池中,预先创建并...

    对象池

    在实际开发中,对象池常用于数据库连接池(如C3P0、HikariCP)、线程池(如Java的ExecutorService)和一些短生命周期但创建成本高的对象,如Socket或大型数据结构。通过使用对象池,可以显著减少系统资源的分配和...

    对象池工厂(微型IOC容器)

    在实际应用中,对象池常用于数据库连接池、线程池等场景,通过复用资源来提升系统的响应速度和整体性能。对于开发者来说,理解并掌握对象池工厂及其背后的原理,对于优化系统资源管理和提高软件性能至关重要。

    关于java对象池的例子代码

    1. 数据库连接池:例如,Apache的DBCP、C3P0和HikariCP等,它们为JDBC连接提供对象池服务,有效提高了数据库操作的性能。 2. 线程池:Java的`java.util.concurrent`包中的`ExecutorService`和`ThreadPoolExecutor`...

    apache对象池的实现

    这个库广泛应用于数据库连接池、线程池等场景,提高了系统的性能和响应速度。 首先,让我们了解什么是对象池。对象池是预先创建并管理的一组对象集合,当程序需要对象时,会从池中获取而不是创建新的对象。当对象...

    使用Java编写的RabbitMQ连接池方法

    RabbitMQ客户连接池的Java实现。我们刚开始也是采用这种方式来实现的,但做压力测试时,发现这种每次新建Connection和新建Channel是非常耗时的,在大并发下,一般都要8...因此我们创建了Java的RabbitMQ的连接池对象。

    Spring Boot整合FTPClient线程池的实现示例

    对象池是一种机制,可以管理对象池中对象的生命周期,提供了获取和释放对象的方法,让客户端可以方便地使用对象池中的对象。 在 Spring Boot 项目中,我们可以使用 Apache 的 common-pool 包来协助我们开发连接池。...

    java手写连接池

    3. 创建数据库连接对象,添加到连接池中。 4. 编写测试代码,从连接池中获取连接,执行SQL操作,然后归还连接。 5. 在测试结束后,可能需要关闭连接池,释放所有资源。 自定义连接池的实现通常包括以下几个关键组件...

    一个好用的连接池类,用于数据库连接等方面

    5. **销毁连接池**:在程序退出或不再需要数据库连接时,应正确地释放所有资源,包括关闭所有连接和销毁连接池对象。 连接池的思想并不仅限于数据库连接,也可以应用于其他资源的管理,比如线程池、网络连接池等。...

    jdbc实现与线程池

    jdbc 连接池是指在应用程序中维护一组连接对象,以便快速地获取与数据库的连接。jdbc 连接池可以提高数据库操作的效率和安全性。 jdbc 连接池的实现包括: * Druid 连接池:Alibaba 开源的连接池实现。 * C3P0 ...

    DBConnectionPool.rar_Java 线程池_True_线程 连接池

    private String dbDiv = "" // 数据库驱动 private String dbUrl = "" // 数据 URL ... pooledConnectionVector = null // 存放连接池中数据库连接的向量 , 初始时为 null 存放的对象为 PooledConnection 型

    durid数据库连接池的使用方式,定义了工具类,可以通过durid方式访问数据库,实现对数据库的添加

    Durid,全称为 Distributed Universal JDBC,是阿里巴巴开源的一个高性能、分布式、可扩展的数据库连接池组件。它在设计上借鉴了C3P0、DBCP等成熟的数据源管理方案,并在此基础上进行了优化和增强,提供了更强大的...

    基于tomcat的连接数与线程池详解

    Tomcat连接器(Connector)是Apache Tomcat服务器的核心组件之一,负责接收客户端的连接请求,创建请求对象,将请求分派给处理请求的Servlet容器,并最终返回响应。在Tomcat的配置和性能优化中,了解如何设置连接数...

    socket线程连接池实例

    总的来说,这个"socket线程连接池实例"展示了如何结合Socket编程和线程池技术,以实现高效的网络通信。通过理解并实践此类示例,开发者可以提升其在网络编程和并发处理方面的技能,这对于构建高性能的分布式应用至关...

    apache线程池

    这个库广泛应用于Java应用程序,尤其是那些需要处理大量并发请求的系统,比如Web服务器和数据库连接池。Apache Commons Pool 1.5.3是该库的一个稳定版本,包含了源代码和API文档,便于开发者理解和自定义线程池行为...

Global site tag (gtag.js) - Google Analytics