2010-03-31 31 views
1

我一直在開發一個項目,在這個項目中,我設計了我的代碼,在連續指定的時間間隔後完成相同的工作。想要完成的工作有很多不同的週期。間隔很小,通常執行它們,因此我使用線程。在那之前,一切都清楚了。Java Session Like Object

爲了減少進程和信息事務,我想把像會話這樣的會話保存給定的數據,並隨時提供給任何線程。有了這個對象,我計劃不要每次都從數據庫查詢相同的配置信息,但是如果它存在於會話中,則需要查詢並存儲會話。

我不知道如何實現這個結構。

問候,

回答

1

這取決於。用Java保存和傳遞信息有幾種方法。

  1. 全程範圍:聲明它static和/或加載它在static {}
  2. Threadlocal:利用ThreadLocal<T>
  3. 對象:將數據放入您剛剛創建的包裝對象(javabeans?)中,並作爲c'tor /方法參數傳遞。

就你而言,我認爲1或3是適用的。一個真正的「會話」通常是線程本地的,但是你的功能需求(「隨時提供給任何線程」,「配置信息」)讓我覺得你更喜歡尋找一個應用程序範圍內的常量。

+0

1.我不想直接使用共享內存。 2. 3.我正在檢查。 – scriptmonster 2010-03-31 17:02:27

+0

好吧,然後去3.有一個「母親」的線程或對象,其中你存儲這些信息並作爲c'tor/method參數傳遞給另一個線程。 – BalusC 2010-03-31 17:03:44

+0

正如你所提到的,我需要一個可以從應用程序中的任何對象訪問的應用程序範圍對象。 我調查了你提到的所有方法。起初我問這個問題,看看用這個對象可以從所有對象中使用的方法。但第三種方式似乎是我的情況最好的。 – scriptmonster 2010-04-02 11:33:53