zoukankan      html  css  js  c++  java
  • Java与Scala的两种简易版连接池

    Java版简易版连接池:

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.util.LinkedList;
    
    /**
     * 简易版的连接池
     */
    public class ConnectionPool {
        //静态的Connection
        private static LinkedList<Connection>connections;
        //加载驱动
        static {
            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
        //获取连接   多线程访问并发问题控制
        public  synchronized static Connection getConnectoin(){
            try {
                if (connections==null){
                    connections=new LinkedList<Connection>();
                    for (int i =0;i<10;i++){
                        Connection conn=DriverManager.getConnection(
                                "jdbc:mysql://localhost:3306/spark",
                                "username",
                                "password"
    
    
                        );
                        connections.push(conn);
                    }
                }
    
            }catch (Exception e){
                e.printStackTrace();
            }
            return connections.poll();
        }
        /**
         * 还连接
         * 返回连接
         */
        public static void returnConnection(Connection conn){
            connections.push(conn);
        }
    }
    

      scala版简易版连接池:

    object ConnectionPoolUtil {
      /**
        * 需要设置的连接池数据
        */
      private val max=10//连接池总数
      private val connectionNum=10//每次产生连接数
      private val pool=new util.LinkedList[Connection]()
      private var conNum=0//当前连接池已经产生的连接数
    
      //获取连接
      def getConnections(): Connection ={
        //同步代码块
        AnyRef.synchronized({
          //加载驱动
          for(i<-1 to connectionNum){
            val conn = DriverManager.getConnection(
              "jdbc:mysql://localhost:3306/spark",
              "username",
              "password"
    
            )
            pool.push(conn)
            conNum+=1
    
          }
          pool.poll()
        })
    
      }
      //加载驱动
      def GetConn(): Unit ={
        //控制加载
        if (conNum<max && pool.isEmpty){
          Class.forName("com.mysql.jdbc.mysql.")
    
        }else if(conNum>=max&&pool.isEmpty){
          println("Jdbc Pool had no connection now,please wait a moments")
          Thread.sleep(2000)
          GetConn()
        }
    
      }
      //还连接
      def returnConn(conn:Connection): Unit ={
        pool.push(conn)
      }
    
    
    }
    

      

  • 相关阅读:
    codeforces C. No to Palindromes!
    codeforces D. Pashmak and Parmida's problem
    codeforces C. Little Pony and Expected Maximum
    codeforces D. Count Good Substrings
    codeforces C. Jzzhu and Chocolate
    codeforces C. DZY Loves Sequences
    codeforces D. Multiplication Table
    codeforces C. Painting Fence
    hdu 5067 Harry And Dig Machine
    POJ 1159 Palindrome
  • 原文地址:https://www.cnblogs.com/zmoumou/p/9948994.html
Copyright © 2011-2022 走看看