Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ObjectPool;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.SQLException;
- import java.util.ArrayList;
- public class PoolController {
- ArrayList<Connection> conpool=new ArrayList<Connection>();
- public int instancescount=0;
- int maxinstancescount=100;
- int ex=0;
- public PoolController() throws ClassNotFoundException{
- Class.forName("org.sqlite.JDBC");
- }
- public Connection add(){
- Connection con=null;
- try {
- con=DriverManager.getConnection("jdbc:mysql://localhost:3306/lesson","root");
- conpool.add(con);
- instancescount++;
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return con;
- }
- public Connection getconnection(){
- Connection con=null;
- if(conpool.size()>0){
- con=conpool.get(conpool.size()-1);
- conpool.remove(conpool.size()-1);}else {
- if(instancescount<=maxinstancescount){
- ex++;
- //System.out.println(ex);
- con=add();
- }else{
- synchronized(conpool){
- while(conpool.size()<=0){
- try {conpool.wait();} catch (InterruptedException e) {}
- }
- }
- }
- }
- return con;
- }
- public void release(Connection con){
- synchronized(conpool){
- conpool.add(con);
- conpool.notify();
- }
- }
- }
- package DataSourcepackage;
- import java.beans.PropertyVetoException;
- import java.io.IOException;
- import java.sql.Connection;
- import java.sql.SQLException;
- import java.sql.Statement;
- import ObjectPool.PoolController;
- public class Mainthread extends Thread {
- DataSource ds;
- int count;
- PoolController poolcontroller;
- public Mainthread(PoolController poolcontroller,int count) throws IOException, SQLException, PropertyVetoException{
- this.poolcontroller=poolcontroller;
- this.count=count;
- start();
- }
- public void run(){
- Connection con=poolcontroller.getconnection();
- Statement stmt;
- try {
- stmt = con.createStatement();
- String query="INSERT INTO lesson.tele2 VALUES ('asd',"+count+",'eq')";
- stmt.executeUpdate(query);
- poolcontroller.release(con);
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- package DataSourcepackage;
- import java.beans.PropertyVetoException;
- import java.io.IOException;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- import java.util.Calendar;
- import ObjectPool.PoolController;
- public class experiment {
- public static void main(String [] args) throws SQLException, ClassNotFoundException, IOException, PropertyVetoException{
- PoolController pool=new PoolController();
- long startTime = System.currentTimeMillis();
- for(int i=0;i<500;i++){
- new Mainthread(pool,i);
- }
- }
- }
- com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connections"
- at sun.reflect.GeneratedConstructorAccessor33.newInstance(Unknown Source)
- at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
- at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
- at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
- at com.mysql.jdbc.Util.getInstance(Util.java:408)
- at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:918)
- at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:897)
- at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:886)
- at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1040)
- at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2253)
- at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2284)
- at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2083)
- at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:806)
- at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
- at sun.reflect.GeneratedConstructorAccessor27.newInstance(Unknown Source)
- at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
- at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
- at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
- at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:410)
- at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:328)
- at java.sql.DriverManager.getConnection(DriverManager.java:664)
- at java.sql.DriverManager.getConnection(DriverManager.java:247)
- at ObjectPool.PoolController.add(PoolController.java:20)
- at ObjectPool.PoolController.getconnection(PoolController.java:39)
- at DataSourcepackage.Mainthread.run(Mainthread.java:21)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement