2012-03-02 60 views
0

我有一些對象在JSP中實例化並使用。我已經創建了這些對象來延遲加載(而不是在cstor中初始化)在一些getters上,因爲這些操作是慢速的,並不是所有的都被使用。從JSP實例化的對象中的線程安全問題

我知道簡單的延遲加載可能會導致線程安全問題:

if(this.var == null) { 
    this.var = service.call(); 
} 
return this.var; 

然而,因爲這些類永遠只能從JSP頁面調用(並且只能被稱爲是由於它們通過容器暴露cstor的PARAMS只對JSP),我沒事吧?由於它是JSP執行的一部分,我無法想象我必須擔心多個線程,但想要得到每個人的想法。

這是運行的應用程序服務器是基於Jetty的。

+0

我可能會誤解,但這些對象可以在會話範圍內嗎?如果是這樣,你可以一次有多個請求(用戶在第一個請求仍在處理時刷新刷新) – 2012-03-02 16:00:10

+0

下面開發的平臺是RESTful(Apache Sling),所有的JSP都使用@page session =「false」設置,所以這些objs將永遠不會存儲在HTTP會話中。 – empire29 2012-03-04 21:53:07

回答

2

如果您沒有在線程之間共享對象(或請求Web應用程序),則不必擔心線程安全問題。

如果您在JSP中構建對象,然後在那裏使用它們,並且對象在後臺執行任何有趣的事情都不會導致問題,那麼您應該沒問題。