我有一个问题,我的应用程序随时运行几乎 300-400 个线程。因此,我在连接 mysql 数据库时遇到一些问题,它随时抛出异常“数据源拒绝建立连接,来自服务器的消息:“连接太多”?”。
我检查并确保以正确的方式关闭了与数据库连接的所有连接。
为了处理这种方法,我编写了一个方法,但我不确定这是否是正确的方法。所有线程都使用此方法来获取数据库连接。
我应该更改方法还是应该添加同步,我不知道如何处理此异常
public static Connection getDatabaseConnection(){
try{
return (Connection)DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306xxx?useUnicode=true"
+ "&characterEncoding=utf-8", "root", "xxx");
}catch(SQLException ex){
Util.sleep(new Random().nextInt(1000));// Equals = Thread.sleep(...);
return getDatabaseConnection();
}
}
最佳答案
您正在为每个线程创建一个数据库连接。处理此问题的更好方法是创建连接池或单例类来访问数据库。我找到了一个旧页面来实现此目的:http://rdeshapriya.com/a-singleton-java-class-for-mysql-db-connection/
关于java - 数据源拒绝建立连接,来自服务器的消息 : “Too many connections” ? - 多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38034771/