程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 利用多線程解決多業務不同定時區間歇觸發問題的一種方法,多線程間歇

利用多線程解決多業務不同定時區間歇觸發問題的一種方法,多線程間歇

編輯:C#入門知識

利用多線程解決多業務不同定時區間歇觸發問題的一種方法,多線程間歇


1.背景

項目中需要解決一個這樣的問題:有兩個業務均需要每隔幾秒觸發一次,但是兩個業務都只是在規定的時間區域內才進行該行為。比如,在早上八點到晚上六點為上班時間,在這個時間段內兩個業務必須每隔幾秒被執行一次,下班後則停止工作。

2.思路

這個問題最開始我是想利用timer來解決,即做兩個timer,一個timer來控制一個事務,然後在各事務對應時間區域內執行。

但是考慮到Timer是在主線程裡執行的,Thread 是在自己的線程中執行的,在多核多線程的 CPU 中,利用Thread的效率高更高一些。而且後期事務變多,控制更復雜,用timer也不是很利於擴展。所以最後決定使用多線程來解決該問題。

經過思考以及參閱類似案例,比如http://www.cnblogs.com/shuang121/archive/2012/07/05/2578033.html,最後將框架設計成如下結構:

                       

3.具體實現

3.1 IshedulerJob

 

3.2 Job

 

3.3SchedulerConfiguration

 

3.4Scheduler

 

3.5 viewer

 

4. 優化

a.兩個事務均涉及到數據庫的多數據增刪查改,為了保證數據的唯一性,對數據庫操作均采取事務型操作。

 

b.為了避免數據庫的重復連接和關閉,這裡盡量使用數據庫的長連接。同時,為了避免兩個事務共用一個數據庫連接而出現的問題,特地使用簡單的數據庫連接池進行處理。

 

c.為了連接池能被共享,對連接池所在類進行單例模式。

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved