蝙蝠岛资源网 Design By www.hbtsch.com
本文向大家介绍了简单的MySQL连接池,用于App服务端比较合适,分享给大家供大家参考,具体内容如下
/**
* 连接池类
*/
package com.junones.test;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
public class MySQLPool {
private static volatile MySQLPool pool;
private MysqlDataSource ds;
private Map<Connection, Boolean> map;
private String url = "jdbc:mysql://localhost:3306/test";
private String username = "root";
private String password = "root1234";
private int initPoolSize = 10;
private int maxPoolSize = 200;
private int waitTime = 100;
private MySQLPool() {
init();
}
public static MySQLPool getInstance() {
if (pool == null) {
synchronized (MySQLPool.class) {
if(pool == null) {
pool = new MySQLPool();
}
}
}
return pool;
}
private void init() {
try {
ds = new MysqlDataSource();
ds.setUrl(url);
ds.setUser(username);
ds.setPassword(password);
ds.setCacheCallableStmts(true);
ds.setConnectTimeout(1000);
ds.setLoginTimeout(2000);
ds.setUseUnicode(true);
ds.setEncoding("UTF-8");
ds.setZeroDateTimeBehavior("convertToNull");
ds.setMaxReconnects(5);
ds.setAutoReconnect(true);
map = new HashMap<Connection, Boolean>();
for (int i = 0; i < initPoolSize; i++) {
map.put(getNewConnection(), true);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public Connection getNewConnection() {
try {
return ds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public synchronized Connection getConnection() {
Connection conn = null;
try {
for (Entry<Connection, Boolean> entry : map.entrySet()) {
if (entry.getValue()) {
conn = entry.getKey();
map.put(conn, false);
break;
}
}
if (conn == null) {
if (map.size() < maxPoolSize) {
conn = getNewConnection();
map.put(conn, false);
} else {
wait(waitTime);
conn = getConnection();
}
}
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
public void releaseConnection(Connection conn) {
if (conn == null) {
return;
}
try {
if(map.containsKey(conn)) {
if (conn.isClosed()) {
map.remove(conn);
} else {
if(!conn.getAutoCommit()) {
conn.setAutoCommit(true);
}
map.put(conn, true);
}
} else {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 测试类
*/
package com.junones.test;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestMySQLPool {
private static volatile int a;
private synchronized static void incr() {
a++;
}
public static void main(String[] args) throws InterruptedException {
int times = 10000;
long start = System.currentTimeMillis();
for (int i = 0; i < times; i++) {
new Thread(new Runnable() {
@Override
public void run() {
MySQLPool pool = MySQLPool.getInstance();
Connection conn = pool.getConnection();
Statement stmt = null;
ResultSet rs = null;
try {
stmt = conn.createStatement();
rs = stmt.executeQuery("select id, name from t_test");
while (rs.next()) {
System.out.println(rs.getInt(1) + ", "
+ rs.getString(2));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
incr();
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
}
}
pool.releaseConnection(conn);
}
}
}).start();
}
while (true) {
if (a == times) {
System.out.println("finished, time:"
+ (System.currentTimeMillis() - start));
break;
}
Thread.sleep(100);
}
}
}
测试结果:1万个并发,5秒完成。
以上就是为大家分享的MySQL连接池类,希望大家喜欢,谢谢大家的关注。
标签:
MySQL,连接池
蝙蝠岛资源网 Design By www.hbtsch.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
蝙蝠岛资源网 Design By www.hbtsch.com
暂无用于App服务端的MySQL连接池(支持高并发)的评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2025年11月04日
2025年11月04日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]