當前位置:編程學習大全網 - 編程語言 - Java程序性能優化-對象復用“池”(1)

Java程序性能優化-對象復用“池”(1)

  ? 對象復用 池 ( )

 對象池化 是目前非常常用的壹種系統優化技術 它的核心思想是 如果壹個類被頻繁請求使用 那麽不必每次都生成壹個實例 可以將這個類的壹些實例保存在壹個 池 中 待需要使用的時候直接從池中獲取 這個 池 就稱為對象池 在實現細節上 它可能是壹個數組 壹個鏈表或者任何集合類

 對象池的使用非常廣泛 其中最為大家所熟悉的 就是線程池和數據庫連接池 線程池中 保存著可以被重用的線程對象 當有任務被提交到線程池時 系統並不需要新建線程 而是從池中獲得壹個可用的線程 執行這個任務 在任務結束後 也不關閉線程 而將它返回到池中 以便下次繼續使用 由於線程的創建和銷毀是較為費時的工作 因此 在線程調度頻繁的系統中 線程池可以很好地改善性能 有關線程池更詳細的介紹 讀者可以參考第 章中 簡單的線程池實現 壹節

 數據庫連接池也是壹種特殊的對象池 它用於維護數據庫連接的集合 當系統需要訪問數據庫時 不需要重新建立數據庫連接 而可以直接從池中獲取 在數據庫操作完成後 也不關閉數據庫連接 而是將連接返回到連接池中 由於數據庫連接的創建和銷毀是重量級的操作 因此 避免頻繁進行這兩個操作 對改善系統的性能也有積極意義

 註意 在程序中使用數據庫連接池和線程池 可以有效地改善系統在高並發下的性能 這是兩個非常重要的性能組件 任何對性能敏感的系統 都需要考慮合理配置這兩個組件

 目前應用較為廣泛的數據庫連接池組件有C P 和Proxool 其中C P 是伴隨著Hibernate壹起發布 與Hibernate聯系緊密的數據庫連接池 本文以C P 為例 展示數據庫連接池的壹般使用方法和特性

 若在Hibernate中使用C P 連接池 只需要將C P 的jar包復制到開發環境中 並且在hibernate cfg xml中加入以下配置項即可

 <property name= connection provider_class > hibernate connection

 C P ConnectionProvider</property>

 <property name= connection autoReconnect >true</property>

 <property name= connection autoReconnectForPools >true</property>

 <property name= connection is connection validation required >true

 </property>

 <! 最大連接數 >

 <property name= hibernate c p max_size > </property>

 <! 最小連接數 >

 <property name= hibernate c p min_size > </property>

 <! 獲得連接的超時時間 如果超過這個時間 會拋出異常 單位毫秒 >

 <property name= hibernate c p timeout > </property>

 <! 最大的PreparedStatement的數量 >

 <property name= hibernate c p max_statements > </property>

 <! 每隔 秒檢查連接池裏的空閑連接 單位是秒 >

 <property name= hibernate c p idle_test_period > </property>

 <! 當連接池裏的連接用完時 C P 壹次性獲取的新的數據庫連接數 >

 <property name= hibernate c p acquire_increment > </property>

 <! 每次都驗證連接是否可用 >

 <property name= hibernate c p validate >true</property>

 當然 也可以脫離Hibernate單獨在應用程序中使用C P 以下代碼構造了壹個C P 的數據庫連接池 並從中獲得壹個數據庫連接

 DataSource unpooled = DataSources

  unpooledDataSource(

  jdbc:mysql:// : /test //連接MySQL數據庫

  root ) //這個不是連接池

 DataSource pooled = DataSources pooledDataSource(unpooled)

 //構建了壹個連接池

 con = pooled getConnection() ? //從連接池中獲取連接

? 返回目錄 Java程序性能優化 讓妳的Java程序更快 更穩定

  編輯推薦

? Java程序設計培訓視頻教程

? J EE高級框架實戰培訓視頻教程

? J ME移動開發實戰教學視頻

 Visual C++音頻/視頻技術開發與實戰

 Oracle索引技術

lishixinzhi/Article/program/Java/gj/201311/27801

  • 上一篇:七年級上冊信息技術(湖南師範大學出版社)教案
  • 下一篇:vb中怎麽將串口接收的數據串添加到excel中並保存
  • copyright 2024編程學習大全網