线程池和数据库连接池

什么是线程池和工作机制?

当一个程序中若创建大量线程,并在任务结束后销毁,会给系统带来过度消耗资源,以及过度切换线程的危险,从而可能导致系统崩溃.为此我们应使用线程池来解决这个问题. 
首先创建一些线程,它们的集合成为线程池,当服务器接收到一个客户请求后,就从线程池中取出一个空闲的线程位置服务,服务结束后不关闭该线程,而是将该线程还回到线程池中.当线程池的编程模式下,任务是提交给整个线程池,而不是直接交给某个线程,线程池在拿到任务后,它就在内部找有无空闲的线程,再把任务交给内部某个空闲的线程,一个线程同时只能执行一个任务,但可以同时向一个线程池提交多个任务.

在JavaEE中,数据连接池的工作机制是什么?

JavaEE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接.客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其标记为忙.如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量由配置参数决定.当使用的池连接调用完成后,池驱动程序将次连接标记为空闲,其他调用就可以使用这个连接.

原文地址:https://www.cnblogs.com/whirlwind/p/9937779.html

时间: 2024-10-09 22:41:30

线程池和数据库连接池的相关文章

简单介绍一下线程池和数据库连接池的原理

当客户端请求的数据量比较大的时候,使用线程池可以节约大量的系统资源,使得更多的CPU时间和内存可以高效地利用起来.而数据库连接池的使用则将大大提高程序运行效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量.使用情况等.本文我们主要就介绍一下线程池和数据库连接池的原理,接下来我们一起来了解一下这一部分内容. 线程池的原理: 其实线程池的原理很简单,类似于操作系统中的缓冲区的概念,它的流程如下:先启动若干数量的线程,并让这些线程都处于睡眠状态,当客户端有一个新请求时,就会唤醒线程池中的某

[数据库连接池] Java数据库连接池--DBCP浅析.

前言对于数据库连接池, 想必大家都已经不再陌生, 这里仅仅设计Java中的两个常用数据库连接池: DBCP和C3P0(后续会更新). 一. 为何要使用数据库连接池假设网站一天有很大的访问量,数据库服务器就需要为每次连接创建一次数据库连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出.拓机.数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现的尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库连接池正式针对这个问题提

JDBC 线程安全 数据库连接池

jdbc 是线程安全的,但是,推荐一个线程用一个链接 JDBC is thread safe: It is quite OK to pass the various JDBC objects between threads. For example, you can create the connection in one thread; another thread can use this connection to create a PreparedStatement and a thir

Mybatis深入之数据库连接池原理

Mybatis深入之数据库连接池原理 简介 主要记录Mybatis数据库连接池实现原理.如何使用连接池来管理数据库连接的.连接池如何向外提供数据库连接.当外部调用使用完成之后是如何将数据库连接放回数据库连接池的. 准备 有前面的相关文章的铺垫.这里就不再从Mybatis数据库相关信息的初始化以及何时创建一个真正的数据库连接并且向外提供使用的.这两方面的过程可以参见Mybatis深入之DataSource实例化过程和Mybatis深入之获取数据库连接两篇文章. 了解Mybatis数据库连接池如何配

【转载】高性能数据库连接池的内幕

原文:高性能数据库连接池的内幕 中生代技术群分享第三十一期 讲师:何涛 编辑:友强 注:完美修订版 摘要:如何打造高性能的数据库连接池框架,可以从哪些角度进行优化,连接池的大量优化实践如何为你的系统保驾护航,本专题将带你走进连接池的世界,为你一一揭晓.    何涛 唯品会平台架构师 何涛,现任职于唯品会平台架构部,要负责数据访问层,网关,数据库中间件,平台框架等开发设计工作.在数据库性能优化,架构设计等方面有着大量的经验积累.热衷于高可用,高并发及高性能的架构研究. 大家可能会有这样疑问:连接池

高性能数据库连接池的内幕

摘要:如何打造高性能的数据库连接池框架,可以从哪些角度进行优化,连接池的大量优化实践如何为你的系统保驾护航,本专题将带你走进连接池的世界,为你一一揭晓.    何涛 唯品会平台架构师 何涛,现任职于唯品会平台架构部,要负责数据访问层,网关,数据库中间件,平台框架等开发设计工作.在数据库性能优化,架构设计等方面有着大量的经验积累.热衷于高可用,高并发及高性能的架构研究. 大家可能会有这样疑问:连接池类似于线程池或者对象池,就是一个放连接的池子,使用的时候从里面拿一个,用完了再归还,功能非常简单,有

数据库连接池原理

——连接池用什么数据结构实现? —— 实现连接池的代码 —— 线程安全问题 [数据库连接池的设计思路及java实现][ http://blog.csdn.net/shijinupc/article/details/7836129] [Java的JDBC数据库连接池实现方法][ http://developer.51cto.com/art/200907/137300.htm ]   ?   [设计数据库连接池,要考虑哪些问题?] 1. 有一个简单的函数从连接池中得到一个 Connection. 2

【转】JDBC学习笔记(8)——数据库连接池(dbcp&C3P0)

转自:http://www.cnblogs.com/ysw-go/ JDBC数据库连接池的必要性 一.在使用开发基于数据库的web程序时,传统的模式基本是按一下步骤: 1)在主程序(如servlet/beans)中建立数据库连接 2)进行sql操作 3)断开数据库连接 二.这种模式开发,存在的问题: 1)普通的JDBC数据库连接使用DriverManager来获取,每次向数据库建立连接的时候都要将Connection加载进内存中,再验证用户名和密码(得花费0.05s~1s的时间).需要数据库连接

Mysql线程池系列一:什么是线程池和连接池( thread_pool 和 connection_pool)

   thread_pool 和 connection_pool 当客户端请求的数据量比较大的时候,使用线程池可以节约大量的系统资源,使得更多的CPU时间和内存可以高效地利用起来.而数据库连接池的使用则将大大提高程序运行效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量.使用情况等.本文我们主要就介绍一下线程池和数据库连接池的原理,接下来我们一起来了解一下这一部分内容. 首先介绍什么是mysql thread pool,干什么用的?使用线程池主要可以达到以下两个目的:1.在大并发的时