JDBC模拟超过最大链接数

  1. mysql默认支持的最大并发数是多少不确定
  2. 代码模拟超过最大连接数
/**
 * LY.com Inc.
 * Copyright (c) 2004-2018 All Rights Reserved.
 */
package zhangyuyao.matrixsb.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import lombok.extern.slf4j.Slf4j;

/**
 * @author zyy43688
 * @version $Id: ConnectionDemo.java, v 0.1 2018年5月23日 下午4:20:13 zyy43688 Exp $
 */
@Slf4j
public class ConnectionDemo {

    /**
     * 记录链接数量
     */
    private static int                      count       = 0;

    /**
     * 记录链接对象的hashCode值,主要是判断是否是创建新的链接对象
     */
    private static Set<Integer>             hashCodes   = new HashSet<>();

    /**
     * 保存连接数,目的是防止GC(如果在超过连接数之前发生了GC,将无法准确的模拟出超过连接数的现象)
     */
    private static Map<Integer, Connection> connections = new HashMap<>();

    /**
     * JDBC链接字符串
     */
    private static final String             url         = "jdbc:mysql://localhost:3306/matrix?useUnicode=true&characterEncoding=UTF8&useSSL=false";

    /**
     * 用户名
     */
    private static final String             username    = "root";

    /**
     * 密码
     */
    private static final String             password    = "225821zyy";

    public static void main(String[] args) throws SQLException {
        // MySQL支持的最大连接数是151
        for (int i = 0; i < 153; i++) {
            getConnection();
        }
        log.info("hashCode总数为:{}", hashCodes.size());
    }

    public static Connection getConnection() {

        Connection connection = null;
        try {
            connection = DriverManager.getConnection(url, username, password);
            if (connection != null) {
                count++;
            }
        } catch (SQLException e) {
            // 仅仅是捕获异常并且打印输出,没有做任何的特殊处理
            e.printStackTrace();
        }

        if (connection == null) {
            return null;
        }

        log.info("第{}个链接对象的hashcode为{}", count, connection.hashCode());

        hashCodes.add(connection.hashCode());
        connections.put(connection.hashCode(), connection);

        return connection;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 【一 你是否愿意为TA而活?NO】 人活着的意义是什么?我先把所有可能出现的答案列举出来: 1. 成功,成为人上人...
    炼已阅读 9,189评论 0 1
  • 按照李蜀黍的思维,就要先名词解释一番,可是我是个小傻鱼,所以我只是想轻轻的在你耳边问一声:你幸福吗?即使每个人定义...
    沈鱼2009阅读 1,769评论 1 3
  • 了解我的朋友这些天问我同一个问题, 我的每日一练坚持了一百多天,怎么突然停止了呢?在这和大家说说我为什么这...
    马琛阅读 2,593评论 2 1
  • 学校每两周会举行一次大教研,届时全校近五十名语文老师齐聚一堂,一起听课、说课、评课,甚是壮观。第一次我们三年级的张...
    清风2005阅读 2,325评论 2 2

友情链接更多精彩内容