<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    黑子的程序員生涯

    努力保持編程中美好的感覺

    Web服務器開發環境下的線程安全問題

    Servlet是在多線程環境下的。即可能有多個請求發給一個servelt實例,每個請求是一個線程。
    struts下的action也類似,同樣在多線程環境下。可以參考struts user guide: http://struts.apache.org/struts-action/userGuide/building_controller.html 中的Action Class Design Guidelines一節:? Write code for a multi-threaded environment - Our controller servlet creates only one instance of your Action class, and uses this one instance to service all requests. Thus, you need to write thread-safe Action classes. Follow the same guidelines you would use to write thread-safe Servlets.
    譯:為多線程環境編寫代碼。我們的controller servlet指揮創建你的Action 類的一個實例,用此實例來服務所有的請求。因此,你必須編寫線程安全的Action類。遵循與寫線程安全的servlet同樣的方針。
    ?
    1.什么是線程安全的代碼
    ? 在多線程環境下能正確執行的代碼就是線程安全的。
    ? 安全的意思是能正確執行,否則后果是程序執行錯誤,可能出現各種異常情況。

    2.如何編寫線程安全的代碼
    ? 很多書籍里都詳細講解了如何這方面的問題,他們主要講解的是如何同步線程對共享資源的使用的問題。主要是對synchronized關鍵字的各種用法,以及鎖的概念。
    ? Java1.5中也提供了如讀寫鎖這類的工具類。這些都需要較高的技巧,而且相對難于調試。
    ?
    ? 但是,線程同步是不得以的方法,是比較復雜的,而且會帶來性能的損失。等效的代碼中,不需要同步在編寫容易度和性能上會更好些。
    ? 我這里強調的是什么代碼是始終為線程安全的、是不需要同步的。如下:
    ? 1)常量始終是線程安全的,因為只存在讀操作。
    ? 2)對構造器的訪問(new 操作)是線程安全的,因為每次都新建一個實例,不會訪問共享的資源。
    ? 3)最重要的是:局部變量是線程安全的。因為每執行一個方法,都會在獨立的空間創建局部變量,它不是共享的資源。局部變量包括方法的參數變量。
    ??? struts user guide里有:
    ??? Only Use Local Variables - The most important principle that aids in thread-safe coding is to use only local variables, not instance variables , in your Action class.
    ??? 譯:只使用用局部變量。--編寫線程安全的代碼最重要的原則就是,在Action類中只使用局部變量,不使用實例變量。

    ?
    總結:
    ??? 在Java的Web服務器環境下開發,要注意線程安全的問題。最簡單的實現方式就是在Servlet和Struts Action里不要使用類變量、實例變量,但可以使用類常量和實例常量。
    如果有這些變量,可以將它們轉換為方法的參數傳入,以消除它們。
    ??? 注意一個容易混淆的地方:被Servlet或Action調用的類中(如值對象、領域模型類)中是否可以安全的使用實例變量?如果你在每次方法調用時
    新建一個對象,再調用它們的方法,則不存在同步問題---因為它們不是多個線程共享的資源,只有共享的資源才需要同步---而Servlet和Action的實例對于多個線程是共享的。
    換句話說,Servlet和Action的實例會被多個線程同時調用,而過了這一層,如果在你自己的代碼中沒有另外啟動線程,且每次調用后續業務對象時都是先新建一個實例再調用,則都是線程安全的。

    posted on 2006-06-09 15:20 黑子 閱讀(1198) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲成在人线中文字幕| 亚洲成人精品久久| 免费看国产成年无码AV片| 特级淫片国产免费高清视频| 亚洲毛片在线免费观看| 亚洲欧美在线x视频| 在线观看肉片AV网站免费| 亚洲日韩乱码中文无码蜜桃臀网站 | 99蜜桃在线观看免费视频网站| 亚洲国产精品一区第二页| 两个人看的www高清免费观看| 亚洲第一AV网站| 69视频免费观看l| 亚洲福利中文字幕在线网址| 亚洲av综合avav中文| 国产精品亚洲一区二区无码 | 免费一看一级毛片人| 久久久久久久久久久免费精品 | 日日噜噜噜噜夜夜爽亚洲精品| 亚洲一区在线视频| 免费无码又爽又刺激高潮的视频| 男男gay做爽爽免费视频| 国产日韩成人亚洲丁香婷婷| 国产午夜无码精品免费看| 国产男女猛烈无遮挡免费网站| 国产亚洲精品仙踪林在线播放| 亚洲一区AV无码少妇电影☆| 特级精品毛片免费观看| 亚洲午夜久久久久妓女影院| 午夜免费啪视频在线观看| 亚洲熟女综合色一区二区三区 | 四虎成人精品永久免费AV| 国产成人精品亚洲日本在线| 免费国产美女爽到喷出水来视频| 中国极品美軳免费观看| 亚洲AⅤ永久无码精品AA | 一级一黄在线观看视频免费| 高清国语自产拍免费视频国产| 三级片免费观看久久| 亚洲日本乱码一区二区在线二产线 | 91香蕉国产线在线观看免费|