線程池的原理:
來看一下線程池究竟是怎么一回事?其實線程池的原理很簡單,類似于操作系統(tǒng)中的緩沖區(qū)的概念,它的流程如下:先啟動若干數(shù)量的線程,并讓這些線程都處于睡眠狀態(tài),當客戶端有一個新請求時,就會喚醒線程池中的某一個睡眠線程,讓它來處理客戶端的這個請求,當處理完這個請求后,線程又處于睡眠狀態(tài)。可能你也許會問:為什么要搞得這么麻煩,如果每當客戶端有新的請求時,我就創(chuàng)建一個新的線程不就完了?這也許是個不錯的方法,因為它能使得你編寫代碼相對容易一些,但你卻忽略了一個重要的問題??性能!就拿我所在的單位來說,我的單位是一個省級數(shù)據大集中的銀行網絡中心,高峰期每秒的客戶端請求并發(fā)數(shù)超過100,如果為每個客戶端請求創(chuàng)建一個新線程的話,那耗費的CPU時間和內存將是驚人的,如果采用一個擁有200個線程的線程池,那將會節(jié)約大量的的系統(tǒng)資源,使得更多的CPU時間和內存用來處理實際的商業(yè)應用,而不是頻繁的線程創(chuàng)建與銷毀。
數(shù)據庫連接池:
數(shù)據庫連接是一種關鍵的有限的昂貴的資源,這一點在多用戶的網頁應用程序中體現(xiàn)得尤為突出。
一個數(shù)據庫連接對象均對應一個物理數(shù)據庫連接,每次操作都打開一個物理連接,使用完都關閉連接,這樣造成系統(tǒng)的 性能低下。 數(shù)據庫連接池的解決方案是在應用程序啟動時建立足夠的數(shù)據庫連接,并講這些連接組成一個連接池(簡單說:在一個“池”里放了好多半成品的數(shù)據庫聯(lián)接對象),由應用程序動態(tài)地對池中的連接進行申請、使用和釋放。對于多于連接池中連接數(shù)的并發(fā)請求,應該在請求隊列中排隊等待。并且應用程序可以根據池中連接的使用率,動態(tài)增加或減少池中的連接數(shù)。
連接池技術盡可能多地重用了消耗內存地資源,大大節(jié)省了內存,提高了服務器地服務效率,能夠支持更多的客戶服務。通過使用連接池,將大大提高程序運行效率,同時,我們可以通過其自身的管理機制來監(jiān)視數(shù)據庫連接的數(shù)量、使用情況等。
1) 最小連接數(shù)是連接池一直保持的數(shù)據庫連接,所以如果應用程序對數(shù)據庫連接的使用量不大,將會有大量的數(shù)據庫連接資源被浪費;
2) 最大連接數(shù)是連接池能申請的最大連接數(shù),如果數(shù)據庫連接請求超過此數(shù),后面的數(shù)據庫連接請求將被加入到等待隊列中,這會影響之后的數(shù)據庫操作。