乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Session 和SessonFactory 的多線程問題

       昵稱22369024 2015-05-03
        Session是非線程安全的,生命周期比較短,代表和數(shù)據(jù)庫,在B/S系統(tǒng)一般不會超過一個(gè)請求,
          內(nèi)部維護(hù)一級緩存和數(shù)據(jù)庫連接,如果session開啟的時(shí)間過長,會長時(shí)間占用緩存和數(shù)據(jù)庫連接池
          
          SessionFactory是線程安全的,一個(gè)線程在使用的話其他線程必須得等待
          String,Interger等不能修改的類,也是線程安全的,String的substring會產(chǎn)生一個(gè)新的對象,原來的對象時(shí)不會變的;
          即每一個(gè)線程自己用自己的對象,不會出現(xiàn)數(shù)據(jù)混亂的情況;
          另外一種只讀的類也是線程安全的,假設(shè)有個(gè)JavaBean只提供了getXX方法,沒有setXX大家都只會讀,不會修改數(shù)據(jù),也是線程安全的類
          大家知道servlet,filter,包括擴(kuò)struts1里面的Action,都是單例模式的,即web容器啟動(dòng)之后這些類只會創(chuàng)建一個(gè)對象,但每來一個(gè)請求Web容器就創(chuàng)建一個(gè)線程,然后呢把這寫對象傳給它讓它去處理,這樣就會有多個(gè)線程同時(shí)去訪問一個(gè)實(shí)例的問題,這個(gè)時(shí)候在一個(gè)實(shí)例里面就不能夠定義這種即能讀又能寫的屬性;假如struts1里面的Action里面定義一個(gè)變量來記錄這個(gè)Action被使用了多少次 即:

      class MyAction Extends Action

      {

          private int count;

          public String execute()

          {

              count++;

          }

      }

       

          會出現(xiàn)多線程并發(fā)的問題,包括我們用的servlet,F(xiàn)ilter,都存在這種問題,在他們里面都不能定義這種即可讀又可寫的屬性,但我們可以定義成
          可讀的,假如說上面的count 改為:final 類型的,程序中只用它,不修改它這樣的程序是不會存在問題的:

      class MyAction Extends Action{

          private final int count;

          public String execute()

          {

              int b=count;

          }

      }


          
              在struts2里面Action是多實(shí)例的,每來一個(gè)請求web容器就創(chuàng)建一個(gè)線程,但是會給每一個(gè)線程創(chuàng)建一個(gè)對象
          所以在struts2的Action里面可以定義很多的成員變量,(其實(shí)回憶一下使用struts2時(shí),我們沒有了FormBean而是把所有的屬性都放在了Action當(dāng)中去了
          

        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多