亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? connectmanager.java

?? 好像是一個SQL執行器的設計實現
?? JAVA
字號:
package mytools.sqlclient;import mytools.util.*;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2001</p> * <p>Company: </p> * @author unascribed * @version 1.0 */public class ConnectManager extends Thread{public static final int MAX_CONN_NUM=Config.getIntParmValue("mytools.max_connect_num"); //最大連接數public static final int INIT_CONN_NUM=Config.getIntParmValue("mytools.init_connect_num"); //初始ejb連接數public static final int MAX_IDLE_TIME=Config.getIntParmValue("mytools.max_idle_time"); //最大連接空閑時間(秒)public static final int MAX_IDLE_CONN_NUM=Config.getIntParmValue("mytools.max_idle_connect_num"); //最大空閑超時連接數public static final int INCREASE_CONN_NUM=Config.getIntParmValue("mytools.increase_connect_num"); //每次增加的連接數public static final int SCAN_INTERNAL=60;  //檢查時間間隔(秒)private boolean isStop=false;   //停止標志private int curConnectNum=0;    //當前連接數private  ConnectInfo[] conList=null;          //連接信息private static Object lockObject = new Object();private static ConnectManager connectMng = null;private boolean isFirstSql = true ;//是否用第一個sql服務器端口號     protected ConnectManager()     {        init();        this.start();     }     /**     功能:管理連接處理     @param 無     @return 無     */     public void run()     {        while(true)        {            Util.sleep(SCAN_INTERNAL);            synchronized(lockObject)            {                if (isStop) break;                int li_idle_num=getTimeOutIdleConnectNum();  //超時空閑連接數                if (li_idle_num>MAX_IDLE_CONN_NUM)                {                    int li_remove_num=li_idle_num-MAX_IDLE_CONN_NUM;                    removeIdleConnects(li_remove_num);                }                //根據需要分配連接                if (hasAvailabelResource()==null)  //無可用連接了,需增加連接                {                    //分配連接                    if (curConnectNum<MAX_CONN_NUM)                    {                      addConnects();   //增加一些連接                      lockObject.notifyAll();                    }                }            }        }//end of while     }     /**     功能:刪除指定數目的空閑連接     @param pi_remove_num 刪除數     @return 無     */     private void removeIdleConnects(int pi_remove_num)     {        int li_remove_num=0;        for (int i=0;i<curConnectNum;i++)        {            if (isTimeOutIdleConnect(conList[i]))            {               removeConnect(i);               li_remove_num++;               if (li_remove_num>=pi_remove_num) break;            }        }        curConnectNum-=li_remove_num;     }     /**     功能:刪除指定的連接     @param pi_idx 連接索引     @return 無     */     private void removeConnect(int pi_idx)     {        try        {          Util.logInfo("remove connect:"+conList[pi_idx].getConnection());          conList[pi_idx].getConnection().close();        }        catch(Exception ex)        {           ex.printStackTrace();           Util.error("removeConnect:exception:"+ex);        }        for (int i=pi_idx+1;i<curConnectNum;i++)        {           conList[i-1]=conList[i];        }     }     /**     功能:判斷指定連接是否為超時空閑連接     @param po_info 連接信息     @return true 是 false 非     */     private boolean isTimeOutIdleConnect(ConnectInfo po_info)     {       long ll_idle_time=System.currentTimeMillis()-po_info.getBeginTime();       if (!po_info.isUsed() && (ll_idle_time>MAX_IDLE_TIME*1000)) return true;       return false;     }     /**     功能:取得超時空閑連接數     @param 無     @return 超時空閑連接數     */     private int getTimeOutIdleConnectNum()     {        int li_idle_num=0;        for (int i=0;i<curConnectNum;i++)        {            if (isTimeOutIdleConnect(conList[i]))            {              li_idle_num++;            }        }        return li_idle_num;     }     /**     功能:增加一些起連接數     @param 無     @return 無     */     private void addConnects()     {        int li_remain_num=MAX_CONN_NUM-curConnectNum;        int li_add_num=INCREASE_CONN_NUM>li_remain_num?li_remain_num:INCREASE_CONN_NUM;        for (int i=0;i<li_add_num;i++)        {            addConnect();        }     }     /**     功能:增加一個連接     @param 無     @return 無     */     private void addConnect()     {       IConnection lo_conn=createNewConnection();       if (lo_conn==null)       {           Util.error("addConnect:建立連接失敗!");           return ;       }       Util.logInfo("create new connection:"+lo_conn);       conList[curConnectNum++]=new ConnectInfo("",lo_conn,false,false);     }     /**      功能:取得一個實例      @param 無      @return 一個實例     */     public static ConnectManager getInstance()     {           if (connectMng == null)           {             synchronized (lockObject)             {                 if (connectMng == null)                 {                    connectMng = new ConnectManager();                 }             }           }           return connectMng;     }     /**      功能:初始化連接信息      @param 無      @return true 成功 false 失敗     */     private synchronized boolean init()     {        conList=new ConnectInfo[MAX_CONN_NUM];        //初始化建立INIT_CONN_NUM個連接        for (int i=0;i<INIT_CONN_NUM;i++)        {           addConnect();        }        Util.logInfo("初始化("+curConnectNum+")個連接成功 !");        return true;     }    /**     功能: 取得當前線程名     @param 無     @return 當前線程名    */    private String getCurThreadName()    {        return Thread.currentThread().getName();    }    /**     功能:查找當前線程的連接     @param ps_threadName 線程名     @return 成功 數據庫連接對象 失敗或找不到 null    */    private IConnection findConnect(String ps_threadName)    {        int i;        for (i=0;i<curConnectNum;i++)        {            if (conList[i].getThreadName().equals(ps_threadName)&& conList[i].isUsed())            {                return conList[i].getConnection();            }        }        return null;    }    /**     功能:創建一個數據庫連接     @param 無     @return 成功 數據庫連接 失敗 null    */    private synchronized IConnection createNewConnection()    {        return ConnectionFactory.createNewConnection();    }    /**     功能:釋放當前線程的指定的連接     @param 無     @return 無    */    public void releaseConnection()    {        //Util.logInfo("in releaseConnection:"+getCurThreadName());        synchronized(lockObject)        {           String ls_threadName=getCurThreadName();            for (int i=0;i<curConnectNum;i++)            {                //該連接不存在未提交的事務,才釋放                if ((!conList[i].isInTransaction()) && conList[i].getThreadName().equals(ls_threadName))                {                    //Util.logInfo("now releaseConnection:"+ls_threadName);                    conList[i].notUse();  //不再占用                    lockObject.notifyAll();                    break;                }            }        }        //Util.logInfo("end of releaseConnection:"+getCurThreadName());    }    /**     功能:設置當前線程的連接正在事務中     @param 無     @return 無    */    public void setInTransaction()    {        setTranStatus(true);        //Util.logInfo("end of setInTransaction :"+ls_threadName);    }    /**    功能:設置連接未在事務狀態中    @param 無    @return 無    */    public void setNotInTransaction()    {       setTranStatus(false);    }    /**    功能:設置連接的事務狀態    @param ps_status 狀態    @return 無    */    private void setTranStatus(boolean pb_status)    {      String ls_threadName=getCurThreadName();      //Util.logInfo("setInTransaction :"+ls_threadName);      synchronized(lockObject)      {          for (int i=0;i<curConnectNum;i++)          {              if (conList[i].getThreadName().equals(ls_threadName))              {                  conList[i].setInTransaction(pb_status); //設置在事務中標志                  return ;              }          }      }    }    /**     功能: 查找一個數據庫連接     @param 無     @return 成功 數據庫連接 失敗 null    */    public IConnection getConnection()    {        String ls_threadName;        while (true)        {       	    synchronized (lockObject)            {                ls_threadName=getCurThreadName();  //當前線程名                //找一個現有的連接                IConnection lo_conn=findConnect(ls_threadName);                if (lo_conn!=null) return lo_conn;                //找一個可用連接                ConnectInfo lo_info=hasAvailabelResource();                if (lo_info!=null)                {                   lo_info.useBy(ls_threadName);   //占用本連接                   return lo_info.getConnection();                }                Util.logInfo("wait connect ! threadName:"+ls_threadName);                //找不到,只好等了                try                {                    lockObject.wait();                }catch(Exception ex)                {                    ex.printStackTrace();                }          }        }    }    /**     功能:判斷是否有可用的連接     @param 無     @return 有 連接對象 無 null    */    private ConnectInfo hasAvailabelResource()    {        for (int i=0;i<curConnectNum;i++)        {            if (!conList[i].isUsed()) return conList[i];        }        return null;    }    /**     功能:取得當前連接數     @param 無     @return 當前連接數    */    public int getConnectionCount()    {        return this.curConnectNum;    }    /**     功能:關閉所有連接     @param 無     @return 無    */    public void closeAllConnection()    {        if (conList==null) return ;        for (int i=0;i<curConnectNum;i++)        {            IConnection lo_conn=conList[i].getConnection();            if (lo_conn!=null)            {                try                {                    lo_conn.close();                    lo_conn=null;                }catch(Exception ex){}                conList[i].reset();            }        }    }    /**     功能: 顯示連接信息     @param 無     @return 無    */    public void displayConnectInfo()    {        if (conList==null)        {            Util.logInfo("displayConnectInfo:no connections");            return ;        }        for (int i=0;i<curConnectNum;i++)        {            System.out.println(conList[i]);        }    }    /**    功能:停止調度,關閉所有連接    @param 無    @return 無    */    public void shutdown()    {      synchronized(lockObject)      {          isStop=true;      }      closeAllConnection();    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
奇米精品一区二区三区四区 | 国产成人免费9x9x人网站视频| 亚洲男人的天堂在线观看| 欧美精品一区二区三区高清aⅴ| 欧美日韩中文精品| 色999日韩国产欧美一区二区| av亚洲产国偷v产偷v自拍| 不卡一二三区首页| 成人午夜视频福利| 国产美女视频91| 8v天堂国产在线一区二区| 99视频一区二区| 精品在线免费视频| 欧美一区二区观看视频| 国产成人亚洲综合a∨猫咪| 国产专区欧美精品| 国产91丝袜在线观看| 99在线精品免费| 色婷婷av一区二区三区gif| 欧美午夜精品久久久久久孕妇| 91丨porny丨最新| 欧美老女人在线| 欧美成人在线直播| 中文幕一区二区三区久久蜜桃| 国产精品久久免费看| 亚洲欧美色图小说| 日产国产高清一区二区三区| 午夜不卡av在线| 亚洲高清视频在线| 亚洲va欧美va人人爽| 大美女一区二区三区| 99久久伊人网影院| 欧美在线观看18| 精品精品国产高清a毛片牛牛| 国产亚洲成av人在线观看导航| 日韩一区欧美小说| 蜜乳av一区二区| hitomi一区二区三区精品| 欧美另类z0zxhd电影| 国产精品热久久久久夜色精品三区 | 欧美疯狂做受xxxx富婆| 久久综合资源网| 成人欧美一区二区三区| 久久激情五月婷婷| av男人天堂一区| 日韩欧美一区二区不卡| 亚洲精品ww久久久久久p站 | 日韩午夜中文字幕| 综合欧美一区二区三区| 麻豆精品视频在线| 在线亚洲免费视频| 中文字幕精品综合| 麻豆精品在线看| 在线观看亚洲精品视频| 国产欧美精品区一区二区三区 | 678五月天丁香亚洲综合网| 国产欧美一区二区精品仙草咪| 五月婷婷色综合| 91亚洲精品乱码久久久久久蜜桃| 欧美一二区视频| 亚洲图片欧美色图| 一本一道久久a久久精品综合蜜臀| 精品日韩在线观看| 亚洲国产综合在线| 一本色道**综合亚洲精品蜜桃冫 | 久久久久久亚洲综合影院红桃| 亚洲aⅴ怡春院| 色婷婷综合视频在线观看| 国产色产综合色产在线视频| 热久久一区二区| 欧美高清dvd| 亚洲国产精品自拍| 欧美影院午夜播放| 一区二区三区中文字幕精品精品| 成人在线综合网| 日本一区二区在线不卡| 久草这里只有精品视频| 日韩欧美一二三区| 麻豆久久久久久久| 精品人在线二区三区| 麻豆91在线播放| 日韩你懂的在线观看| 蜜臀av一区二区| 日韩精品影音先锋| 国产一区二区不卡| 中文字幕 久热精品 视频在线| 国产一区视频导航| 中文字幕va一区二区三区| 成人亚洲精品久久久久软件| 国产精品国产三级国产普通话蜜臀| 国产二区国产一区在线观看| 中文字幕欧美激情| 97精品国产97久久久久久久久久久久| 中文字幕亚洲综合久久菠萝蜜| 99国产精品久久久久久久久久久 | 欧美日韩卡一卡二| 日韩中文字幕亚洲一区二区va在线| 欧美精品自拍偷拍| 国产一区二三区| 国产精品久久久久久久裸模| 色av成人天堂桃色av| 丝袜诱惑制服诱惑色一区在线观看 | 国产一区二区三区免费看| 久久久噜噜噜久久中文字幕色伊伊 | 欧美性受xxxx| 免费看欧美女人艹b| 久久夜色精品国产噜噜av| 成人一级片网址| 亚洲国产va精品久久久不卡综合| 欧美一级生活片| www.欧美色图| 蜜桃视频一区二区三区在线观看| 欧美高清在线一区| 欧美卡1卡2卡| eeuss影院一区二区三区 | 日本视频在线一区| 国产精品私人自拍| 欧美日本一区二区在线观看| 国产成人鲁色资源国产91色综 | 午夜影院久久久| 久久久久久麻豆| 欧美日韩国产大片| 成人综合婷婷国产精品久久免费| 亚洲福利国产精品| 亚洲国产精品传媒在线观看| 欧美日韩高清一区二区| 成人99免费视频| 久久国产三级精品| 亚洲综合图片区| 中文幕一区二区三区久久蜜桃| 91精品国产色综合久久久蜜香臀| eeuss鲁一区二区三区| 老司机免费视频一区二区| 亚洲欧美色图小说| 中文字幕不卡在线观看| 欧美www视频| 欧美在线小视频| 97精品电影院| 成人高清免费在线播放| 九色porny丨国产精品| 午夜欧美一区二区三区在线播放| 国产精品欧美一区二区三区| 亚洲精品在线观看网站| 7777精品伊人久久久大香线蕉经典版下载 | 国产精品毛片a∨一区二区三区| 欧美一级xxx| 制服丝袜一区二区三区| 在线精品视频一区二区| 99久久精品费精品国产一区二区| 国产精品主播直播| 美女视频一区在线观看| 秋霞午夜av一区二区三区| 天堂成人国产精品一区| 亚洲成人资源网| 亚洲成va人在线观看| 五月天亚洲精品| 性欧美大战久久久久久久久| 亚洲一区二区三区四区中文字幕| 一区二区三区国产| 亚洲激情欧美激情| 亚洲线精品一区二区三区八戒| 亚洲免费观看高清完整版在线观看熊| 日韩一区日韩二区| 亚洲欧美日韩国产手机在线| 亚洲色图欧美偷拍| 精品在线观看视频| 国产在线精品一区二区| 国产成人精品免费看| 粉嫩久久99精品久久久久久夜 | 中文字幕亚洲不卡| 亚洲欧美激情小说另类| 亚洲综合免费观看高清完整版 | 国产精品911| 99精品欧美一区二区三区小说| 99精品欧美一区二区蜜桃免费| 色综合天天做天天爱| 欧美午夜精品理论片a级按摩| 7777精品伊人久久久大香线蕉经典版下载 | 欧美日韩亚洲综合一区| 欧美人伦禁忌dvd放荡欲情| 日韩欧美中文一区二区| 久久奇米777| 亚洲狠狠丁香婷婷综合久久久| 日韩中文欧美在线| 国产白丝精品91爽爽久久| 一区二区日韩电影| 久久久久久久综合日本| 亚洲一区二区三区四区在线免费观看 | 久久色.com| 欧美日韩国产高清一区二区三区| 欧美精选在线播放| 日韩三级中文字幕| 欧美国产日本韩| 五月天欧美精品| 风流少妇一区二区| 欧美日韩精品免费| 国产三级精品在线| 亚洲国产成人tv| 国产高清无密码一区二区三区| 色菇凉天天综合网|