1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      java中ThreadLocal的使用場景有哪些

      今天就跟大家聊聊有關(guān)java中ThreadLocal的使用場景有哪些,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

      公司主營業(yè)務(wù):成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出德惠免費(fèi)做網(wǎng)站回饋大家。

      常用的java框架有哪些

      1.SpringMVC,Spring Web MVC是一種基于Java的實(shí)現(xiàn)了Web MVC設(shè)計(jì)模式的請求驅(qū)動類型的輕量級Web框架。2.Shiro,Apache Shiro是Java的一個(gè)安全框架。3.Mybatis,MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優(yōu)秀持久層框架。4.Dubbo,Dubbo是一個(gè)分布式服務(wù)框架。5.Maven,Maven是個(gè)項(xiàng)目管理和構(gòu)建自動化工具。6.RabbitMQ,RabbitMQ是用Erlang實(shí)現(xiàn)的一個(gè)高并發(fā)高可靠AMQP消息隊(duì)列服務(wù)器。7.Ehcache,EhCache 是一個(gè)純Java的進(jìn)程內(nèi)緩存框架。

      1、各種框架中的應(yīng)用

      Spring框架的事務(wù)管理中使用ThreadLocal來管理連接,每個(gè)線程是單獨(dú)的連接,當(dāng)事務(wù)失敗時(shí)不能影響到其他線程的事務(wù)過程或結(jié)果,還有大家耳聞目睹的ORM框架、Mybatis也是用ThreadLocal管理,SqlSession也是如此。

      //Spring TransactionSynchronizationManager類
      @Override
      protected void doBegin(Object transaction, TransactionDefinition definition) {
          DataSourceTransactionObject txObject = (DataSourceTransactionObject) transaction;
          Connection con = null;
          try {
              //此處省略N行代碼
              if (txObject.isNewConnectionHolder()) {
                  //綁定數(shù)據(jù)庫連接到線程中
                  TransactionSynchronizationManager.bindResource(obtainDataSource(), txObject.getConnectionHolder());
              }
          }
          catch (Throwable ex) {
              if (txObject.isNewConnectionHolder()) {
                  //當(dāng)發(fā)生異常時(shí),移除線程中的連接
                  DataSourceUtils.releaseConnection(con, obtainDataSource());
                  txObject.setConnectionHolder(null, false);
              }
              throw new CannotCreateTransactionException("Could not open JDBC Connection for transaction", ex);
          }
      }

      2、防止內(nèi)存泄漏

      通常我們是使用如下的方式操作ThreadLocal,在使用完threadlocal后一定要remove掉,防止內(nèi)存泄露。

      private static final ThreadLocal loginUserLocal = new ThreadLocal();
       
      public static LoginUser getLoginUser() {
          return loginUserLocal.get();
      }
       
      public static void setLoginUser(LoginUser loginUser) {
          loginUserLocal.set(loginUser);
      }
       
      public static void clear() {
          loginUserLocal.remove();
      }
       
      //在使用完后一定要清理防止內(nèi)存泄露
      try{
          loginUserLocal.set(loginUser);
          //執(zhí)行其他業(yè)務(wù)邏輯
      }finally{
          loginUserLocal.remove();
      }

      看完上述內(nèi)容,你們對java中ThreadLocal的使用場景有哪些有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


      網(wǎng)頁名稱:java中ThreadLocal的使用場景有哪些
      文章路徑:http://www.ef60e0e.cn/article/ipddch.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        巩义市| 晋城| 苍山县| 九台市| 尼玛县| 赣州市| 柳河县| 昭平县| 三台县| 巴彦淖尔市| 天等县| 合肥市| 阳江市| 浑源县| 华容县| 巧家县| 女性| 白河县| 梅河口市| 塔河县| 孙吴县| 思南县| 湟源县| 固始县| 漠河县| 新乡市| 宁河县| 瑞安市| 墨脱县| 开封县| 四平市| 绵阳市| 双峰县| 蓬溪县| 雷山县| 鄂托克旗| 宁海县| 永嘉县| 集贤县| 阳新县| 清远市|