文章版權由做者李曉暉和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/。html
項目中須要解決一個這樣的問題:有兩個業務均須要每隔幾秒觸發一次,可是兩個業務都只是在規定的時間區域內才進行該行爲。好比,在早上八點到晚上六點爲上班時間,在這個時間段內兩個業務必須每隔幾秒被執行一次,下班後則中止工做。數據庫
這個問題最開始我是想利用timer來解決,即作兩個timer,一個timer來控制一個事務,而後在各事務對應時間區域內執行。微信
可是考慮到Timer是在主線程裏執行的,Thread 是在本身的線程中執行的,在多核多線程的 CPU 中,利用Thread的效率高更高一些。並且後期事務變多,控制更復雜,用timer也不是很利於擴展。因此最後決定使用多線程來解決該問題。多線程
通過思考以及參閱相似案例,好比http://www.cnblogs.com/shuang121/archive/2012/07/05/2578033.html,最後將框架設計成以下結構:框架
a.兩個事務均涉及到數據庫的多數據增刪查改,爲了保證數據的惟一性,對數據庫操做均採起事務型操做。優化
b.爲了不數據庫的重複鏈接和關閉,這裏儘可能使用數據庫的長鏈接。同時,爲了不兩個事務共用一個數據庫鏈接而出現的問題,特意使用簡單的數據庫鏈接池進行處理。線程
c.爲了鏈接池能被共享,對鏈接池所在類進行單例模式。設計
-----歡迎轉載,但保留版權,請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/3d
若是您以爲本文確實幫助了您,能夠微信掃一掃,進行小額的打賞和鼓勵,謝謝 ^_^htm