一、c3p0

public class ConnectionManager {

    public static ComboPooledDataSource dataSource;
static {
try {
dataSource = new ComboPooledDataSource();
dataSource.setUser("freeswitch");
dataSource.setPassword("freeswitch");
dataSource.setJdbcUrl("jdbc:postgresql://数据库地址:数据库端口/freeswitch");
dataSource.setDriverClass("org.postgresql.Driver");
dataSource.setInitialPoolSize();
dataSource.setMinPoolSize();
dataSource.setMaxPoolSize();
dataSource.setMaxStatements();
dataSource.setMaxIdleTime();
} catch (Exception e) {
e.printStackTrace();
}
} public static Connection getConnection3() {
Connection conn = null;
if (null != dataSource) {
try {
conn = dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}
return conn;
}
}

二、dbcp2

public class DataBaseHelper {

    // 保证一个线程一个Connection,线程安全
private static final ThreadLocal<Connection> connHolder;
// 线程池
private static final BasicDataSource dataSource;
static {
connHolder = new ThreadLocal<Connection>();
dataSource = new BasicDataSource();
dataSource.setDriverClassName("org.postgresql.Driver");
dataSource.setUrl("jdbc:postgresql://数据库地址:数据库端口/freeswitch");
dataSource.setUsername("freeswitch");
dataSource.setPassword("freeswitch");
/// 设置空闲和借用的连接的最大总数量,同时可以激活。
dataSource.setMaxTotal();
// 设置初始大小
dataSource.setInitialSize();
// 最小空闲连接
dataSource.setMinIdle();
// 最大空闲连接
dataSource.setMaxIdle();
// 超时等待时间毫秒
dataSource.setMaxWaitMillis( * );
// 只会发现当前连接失效,再创建一个连接供当前查询使用
dataSource.setTestOnBorrow(true);
// removeAbandonedTimeout :超过时间限制,回收没有用(废弃)的连接(默认为 300秒,调整为180)
dataSource.setRemoveAbandonedTimeout();
// removeAbandoned :超过removeAbandonedTimeout时间后,是否进
// 行没用连接(废弃)的回收(默认为false,调整为true)
// DATA_SOURCE.setRemoveAbandonedOnMaintenance(removeAbandonedOnMaintenance);
dataSource.setRemoveAbandonedOnBorrow(true);
// testWhileIdle
dataSource.setTestOnReturn(true);
// testOnReturn
dataSource.setTestOnReturn(true);
// setRemoveAbandonedOnMaintenance
dataSource.setRemoveAbandonedOnMaintenance(true);
// 记录日志
dataSource.setLogAbandoned(true);
// 设置自动提交
dataSource.setDefaultAutoCommit(true); } /**
* 获取数据库连接
*/
public static Connection getConnection() {
Connection conn = connHolder.get();
if (conn == null) {
try {
conn = dataSource.getConnection();
System.out.println("get connection success");
} catch (SQLException e) {
System.out.println("get connection failure:" + e);
} finally {
connHolder.set(conn);
}
}
return conn;
} /**
* 关闭数据库连接
*/
public static void closeConnection() {
Connection conn = connHolder.get();
if (conn != null) {
try {
conn.close();
System.out.println("close connection success");
} catch (SQLException e) {
System.out.println("close connection failure:" + e);
throw new RuntimeException(e);
} finally {
connHolder.remove();
}
}
} }

线程池c3p0和dbcp2的配置初始化实例的更多相关文章

  1. SpringBoot线程池的创建、@Async配置步骤及注意事项

    最近在做订单模块,用户购买服务类产品之后,需要进行预约,预约成功之后分别给商家和用户发送提醒短信.考虑发短信耗时的情况所以我想用异步的方法去执行,于是就在网上看见了Spring的@Async了. 但是 ...

  2. 【玩转SpringBoot】异步任务执行与其线程池配置

    同步代码写起来简单,但就是怕遇到耗时操作,会影响效率和吞吐量. 此时异步代码才是王者,但涉及多线程和线程池,以及异步结果的获取,写起来颇为麻烦. 不过在遇到SpringBoot异步任务时,这个问题就不 ...

  3. java多线程详解(7)-线程池的使用

    在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了, 这样频繁创建线程就会大大降低系 ...

  4. 从源代码分析Universal-Image-Loader中的线程池

    一般来讲一个网络访问就需要App创建一个线程来执行,但是这也导致了当网络访问比较多的情况下,线程的数目可能积聚增多,虽然Android系统理论上说可以创建无数个线程,但是某一时间段,线程数的急剧增加可 ...

  5. Universal-Image-Loader完全解析--从源代码分析Universal-Image-Loader中的线程池

    一般来讲一个网络访问就需要App创建一个线程来执行,但是这也导致了当网络访问比较多的情况下,线程的数目可能积聚增多,虽然Android系统理论上说可以创建无数个线程,但是某一时间段,线程数的急剧增加可 ...

  6. Java 线程池(ThreadPoolExecutor)原理分析与使用

    在我们的开发中"池"的概念并不罕见,有数据库连接池.线程池.对象池.常量池等等.下面我们主要针对线程池来一步一步揭开线程池的面纱. 使用线程池的好处 1.降低资源消耗 可以重复利用 ...

  7. Tomcat系列(8)——Tomcat运行模式连接数和线程池

    Connector的主要功能,是接收连接请求,创建Request和Response对象用于和请求端交换数据:然后分配线程让Engine(也就是Servlet容器)来处理这个请求,并把产生的Reques ...

  8. Java线程池(ThreadPoolExecutor)原理分析与使用

    在我们的开发中"池"的概念并不罕见,有数据库连接池.线程池.对象池.常量池等等.下面我们主要针对线程池来一步一步揭开线程池的面纱. 使用线程池的好处 1.降低资源消耗 可以重复利用 ...

  9. Java并发(四)线程池使用

    上一篇博文介绍了线程池的实现原理,现在介绍如何使用线程池. 目录 一.创建线程池 二.向线程池提交任务 三.关闭线程池 四.合理配置线程池 五.线程池的监控 线程池创建规范 一.创建线程池 我们可以通 ...

随机推荐

  1. Current mirror drives multiple LEDs from a low supply voltage

    Driving LEDs at a regulated current from low supply voltages can be difficult because minimal overhe ...

  2. Unity 网络请求(1)

    using UnityEngine; using System.Collections; public class Scene1 : MonoBehaviour { //下载图片的容器 private ...

  3. cocos2d-x hello world及安卓平台迁移

        本节和大家一起新建一个项目工程,并通过cygwin迁移至android平台.      以下是本节主要内容: 利用cocos2d-x自带脚本,生成测试工程,并测试运行: 将该测试项目通过cyg ...

  4. 独立成分分析 与 功能连接之间的关联尝试 by 张高燕

    在处理fMRI数据时,使用空间ICA的方法.   将一个四维的fMRI数据分解为空间pattern与时间序列的乘积. //这里的pattern=component   其中每一pattern的时间序列 ...

  5. viewport Meta Tag

    网页手机wap2.0网页的head里加入下面这条元标签,在iPhone的浏览器中页面将以原始大小显示,并不允许缩放. <meta name="viewport" conten ...

  6. datanode无法启动问题

    在执行了hdfs namenode -format命令之后,再启动datanode发现无法启动. 查看datanode的日志发现: datanode的ClusterId和namenode的Cluste ...

  7. CarbonData编译与安装

    原文连接 http://xiguada.org/carbondata_compile/ CarbonData是啥? CarbonData is a fully indexed columnar and ...

  8. jdk1.7下载路径

    http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

  9. 通过Intel XDK编写跨平台app(一)

    Intel XDK 是一个新的跨平台手机应用开发工具.它努力把整个开发流程变的简单,尽可能把所有的平台都封装到一个包中,通过收集各种开发工具来使你的开发变的简单. 在这篇文章中,我将会向你介绍什么是I ...

  10. ireport制作报表pageheader只在第一页出现的解决办法

    这问题居然没找到解决办法..... 好吧,那我自己解决..... 其实很简单..... 只要打开ireport,pageheader的属性,在print when expression设置$V{PAG ...