2015-04-23 24 views
0

我正在使用使用JSP,servlet開發的數據庫項目。這是一個擁有20多個用戶的ERP項目。我的老闆告訴我在項目中使用Multi -ading。請告訴我如何決定哪些頁面應該是多線程的,哪些不應該。要在jsp中創建哪個頁面isThreadSafe = false

+0

Web容器是多線程的,併爲您處理多線程。不要在servlet中存儲任何狀態,而在JSP中(即不應該有任何Java代碼)更少。 –

回答

0

jsp中的Java多線程並不是一個有效的參數,因爲@JBNizet表示,Web容器已經爲您處理多線程。

但是你可以做的是在你有可以異步運行的代碼的情況下使用多線程。

讓我們假設你有其中的場景:

obj1 = obj2.getValFromDb(obj3.getSessionId(obj4.getId())); 

在此,多線程不能使用,因爲任務必須在爲了得到結果順序執行。所以,一個單獨的線程是所有你需要...

但在下面的例子中...

val = getValFromDb()+getValFromSRC1()+getValFromSRC2(); 

子結果可以在單獨的線程來計算。

因此,您必須對您的代碼進行評估並適當地使用多線程。

至於jsps中的isThreadSafe指令,您唯一能做的就是禁用多線程(這與您正在尋找的相反)。由於規範說:

使用SingleThreadModel接口保證只有一個 在一個時間線將在一個給定的servlet實例的服務 方法執行。值得注意的是,這個保證只適用於每個servlet實例的 ,因爲容器可能會選擇合併這樣的對象。一次可以訪問多個servlet實例 的對象(例如HttpSession實例)可以在特定時間到達多個servlet,包括實現 SingleThreadModel的那些。