1. 程式人生 > >如何用SingleThreadModel解決多執行緒安全問題

如何用SingleThreadModel解決多執行緒安全問題

2.用SingleThreadModel解決多執行緒安全問題:

前 面介紹的都是普通的Servlet。對於每一個使用者請求,那些Servlet都會用執行緒的方式給予應答。這樣比較節省系統的資源。Sun公司也給出了另外 一種方法,就是這節要介紹的SingleThreadModel的方法。當implement這個介面以後,你的Servlet就變成了另外一種模式工 作。即,每一個新使用者的請求,都會生成一個新的Servlet例項來應答。這種方法有兩個方面的弊病。一是效能太差,最後會把機器拖累死。還有一條就是有 時解決不了實際問題。每個servlet類例項都有自己獨立的變數。如果我們的本意就是想讓客戶執行緒之間進行這些變數的交流。這種方法就無法做到。就像還 有人建議的,用區域性變數來代替類變數一樣,有時也解決不了實際當中的演算法問題。因為我們有時就需要用一個類似類變數一樣的東西,來控制全域性。即使這種方法這不好,那不好,現實中很多很多工程師也說不好。

我還是給出了例子,讓大家看看結果。

例:2.2.1

package com;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.SingleThreadModel;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class ServletHello1 extends HttpServlet implements SingleThreadModel{
    int bookNum=20;

詳情請見:http://www.mark-to-win.com/index.html?content=Jsp/jspUrl.html&chapter=Jsp/jsp2_web.html#SingleThreadModelSolution