我遇到的问题是我的应用程序在任何时候都运行了300-400个线程。所以我有一些问题,我连接到mysql数据库,它随时抛出异常"数据源拒绝建立连接,来自服务器的消息:“连接太多”? &#34 ;.
我检查并确保以正确的方式关闭所有连接,我已连接到db。
为了处理这种方法,我写了一个方法,但我不确定这是否是正确的方法。此方法已用于所有线程以获取数据库连接。
我应该更改方法还是应该添加同步到此,我不知道如何处理此异常
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();
}
}
答案 0 :(得分:1)
您正在为每个线程创建数据库连接。处理此问题的更好方法是创建连接池或单例类以访问db。我找到了一个旧页面来实现这一目标:http://rdeshapriya.com/a-singleton-java-class-for-mysql-db-connection/