黄视频网站在线免费观看-黄视频网站在线看-黄视频网站在线观看-黄视频网站免费看-黄视频网站免费观看-黄视频网站免费

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > MyBatis之線程優(yōu)化

MyBatis之線程優(yōu)化

來源:千鋒教育
發(fā)布人:小鋒
時(shí)間: 2019-09-18 15:57:00 1568793420

  前言

  我們的項(xiàng)目存在大量用戶同時(shí)訪問的情況,那么就會(huì)出現(xiàn)大量線程并發(fā)訪問數(shù)據(jù)庫,這樣會(huì)帶來線程同步問題,本章我們將討論MyBatis的線程同步問題和優(yōu)化方法。

  MyBatis的線程同步問題

  MyBatis需要通過SqlSession實(shí)現(xiàn)數(shù)據(jù)庫操作,而SQLSession內(nèi)部的實(shí)現(xiàn)需要使用JDBC的Connection連接對(duì)象,而Connection對(duì)象是非線程安全的,當(dāng)多個(gè)線程同時(shí)訪問時(shí),就可能出現(xiàn)線程同步的問題。

  線程同步的解決方法

  我們前面學(xué)習(xí)過解決線程同步的方法是:鎖機(jī)制。

  我們可以給所有數(shù)據(jù)庫相關(guān)方法或代碼添加synchronized關(guān)鍵字,本質(zhì)上是讓所有線程排隊(duì)執(zhí)行這些操作。

圖片1

  這樣解決了線程同步問題,但是會(huì)帶來執(zhí)行效率的降低,如果大量的用戶訪問時(shí)會(huì)導(dǎo)致長時(shí)間的等待,所以今天我們將學(xué)習(xí)另一種解決方法。

  ThreadLocal解決線程同步

  ThreadLocal(線程局部變量),可以為每個(gè)線程創(chuàng)建對(duì)象的副本,這樣就不存在多線程訪問一個(gè)對(duì)象的情況,以空間換時(shí)間,效率高,速度快,但是內(nèi)存空間消耗更大。

圖片2

  ThreadLocal的用法

  創(chuàng)建方法:

  ThreadLocal<數(shù)據(jù)的類型> threadLocal = new ThreadLocal<數(shù)據(jù)類型>();

  數(shù)據(jù)的類型是每個(gè)線程中需要保存數(shù)據(jù)的類型。

  數(shù)據(jù)存取:

  void set(Object 數(shù)據(jù)) 將數(shù)據(jù)和當(dāng)前線程綁定起來。

  Object get() 從當(dāng)前線程中獲得綁定的數(shù)據(jù)。

  Session線程安全的優(yōu)化方法

  1)創(chuàng)建ThreadLocal來保存SqlSession

  2)編寫獲得SqlSession的方法

  1.調(diào)用ThreadLocal的get方法來獲得SqlSession

  2.如果SqlSession對(duì)象為null,調(diào)用工廠來創(chuàng)建SqlSession,使用ThreadLocal的set方法保存到線程中,返回SqlSession對(duì)象

  3.如果SqlSession對(duì)象不為null,就直接返回

  示例代碼:

  /**

  * MyBatis工具類

  * 用于獲得當(dāng)前線程中的SqlSession

  * 使用ThreadLocal解決線程安全問題

  */

  public class MyBatisUtils {

  public static final String CONFIG_FILENAME = "mybatis-config.xml";

  //使用ThreadLocal保存SQLSession對(duì)象

  private static ThreadLocal threadLocal = new ThreadLocal();

  //SqlSession的工廠,單例

  private static SqlSessionFactory factory = null;

  /**

  * 創(chuàng)建工廠

  */

  public static void buildFactory(){

  try {

  factory = new SqlSessionFactoryBuilder().build(

  Resources.getResourceAsStream(CONFIG_FILENAME));

  } catch (IOException e) {

  e.printStackTrace();

  }

  }

  //在靜態(tài)代碼塊中執(zhí)行,保證工廠的創(chuàng)建只執(zhí)行一次

  static{

  buildFactory();

  }

  /**

  * 從當(dāng)前線程中獲得Session

  * @return

  */

  public static SqlSession getSession(){

  //從ThreadLocal獲得線程中的SqlSession

  SqlSession sqlSession = threadLocal.get();

  if(sqlSession == null){

  //如果SqlSession為空,創(chuàng)建SqlSession

  if(factory == null){

  buildFactory();

  }

  sqlSession = factory.openSession();

  //把新創(chuàng)建的SqlSession,存入到ThreadLocal,綁定到線程中

  threadLocal.set(sqlSession);

  }

  return sqlSession;

  }

  /**

  * 關(guān)閉Session

  */

  public static void closeSession(){

  //從ThreadLocal獲得線程中的SqlSession

  SqlSession sqlSession = threadLocal.get();

  if(sqlSession != null){

  //關(guān)閉會(huì)話

  sqlSession.close();

  //設(shè)置為null,gc會(huì)盡快回收

  sqlSession = null;

  //刪除掉ThreadLocal中的SqlSession

  threadLocal.set(null);

  }

  }

  }

  總結(jié)

  線程同步是進(jìn)行JavaEE開發(fā)需要重點(diǎn)考慮的問題,MyBatis的SQLSession有線程同步問題,使用ThreadLocal為每個(gè)線程綁定自己的SQLSession副本,可以解決線程同步問題,同時(shí)不會(huì)降低程序執(zhí)行效率。

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
市場上C++主要是用來做什么的?

C++是一種廣泛應(yīng)用于市場上的編程語言,具有高性能和強(qiáng)大的功能。它的設(shè)計(jì)目標(biāo)是提供高效的底層控制和與硬件交互的能力,同時(shí)保持可移植性和可...詳情>>

2023-10-14 06:01:51
為什么說PHP與Swoole是優(yōu)異組合?

PHP與Swoole在Web開發(fā)和網(wǎng)絡(luò)編程領(lǐng)域中,共同構(gòu)成了一種強(qiáng)大的解決方案。什么是PHPPHP是一種廣泛使用的開源服務(wù)器端腳本語言,特別適用于Web開...詳情>>

2023-10-14 05:08:41
Javaweb開發(fā)為什么需要分前后端?

Javaweb開發(fā)采用前后端分離的設(shè)計(jì)模式是有著諸多理由的,以下分析了這種設(shè)計(jì)模式的主要特點(diǎn)和優(yōu)勢。什么是前后端分離在Web開發(fā)中,前后端分離是...詳情>>

2023-10-14 05:05:24
瀑布開發(fā)和敏捷開發(fā)的區(qū)別是什么?

一、開發(fā)流程不同瀑布開發(fā)采用線性的開發(fā)流程,按照預(yù)先規(guī)劃的順序依次進(jìn)行需求分析、設(shè)計(jì)、編碼、測試和維護(hù)等環(huán)節(jié)。每個(gè)環(huán)節(jié)都有明確的交付物...詳情>>

2023-10-14 04:47:33
有哪款比較好用的免費(fèi)的缺陷管理工具?

一、BugzillaBugzilla是一款廣泛使用的免費(fèi)缺陷管理工具,具備完善的缺陷管理功能,并支持多用戶協(xié)同工作。Bugzilla提供了強(qiáng)大的搜索和過濾功能...詳情>>

2023-10-14 04:40:43
久久成人综合网| 国产91精品露脸国语对白| 九九精品在线播放| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 日本免费乱理伦片在线观看2018| 99热精品在线| 韩国毛片基地| 美女免费精品高清毛片在线视| 国产不卡在线看| 99色视频在线| 99热精品一区| 国产91素人搭讪系列天堂| 中文字幕一区二区三区精彩视频| 欧美另类videosbestsex久久| 日韩中文字幕在线亚洲一区| 亚洲天堂免费| a级毛片免费观看网站| 麻豆系列 在线视频| 91麻豆爱豆果冻天美星空| 亚洲天堂一区二区三区四区| 亚洲精品久久玖玖玖玖| 一级毛片视频在线观看| a级毛片免费观看网站| 免费毛片播放| 99热热久久| 欧美激情一区二区三区在线播放| 一级毛片看真人在线视频| 国产伦理精品| 毛片电影网| 99色视频在线| 一级女性全黄久久生活片| 四虎影视库| 美女免费精品高清毛片在线视| 高清一级片| 国产一级强片在线观看| 日本在线不卡视频| 四虎影视库国产精品一区| 免费的黄色小视频| 国产高清视频免费观看| 精品视频一区二区三区| 一a一级片| 欧美a级成人淫片免费看| 国产精品123| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 精品视频在线看| 欧美激情一区二区三区视频| 韩国毛片免费大片| 九九久久国产精品大片| 韩国三级视频网站| 国产福利免费视频| 91麻豆爱豆果冻天美星空| 日本伦理片网站| 精品国产亚洲人成在线| 国产美女在线一区二区三区| 久久久久久久网| 中文字幕一区二区三区 精品| 91麻豆精品国产自产在线观看一区| 日韩在线观看免费| a级黄色毛片免费播放视频| 毛片高清| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 欧美另类videosbestsex| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产成人啪精品| 日日日夜夜操| 成人影视在线观看| 日本特黄特色aa大片免费| 亚洲 男人 天堂| 一级片片| 欧美爱色| 91麻豆精品国产综合久久久| 欧美另类videosbestsex视频| 国产不卡在线看| 国产网站免费观看| 精品国产香蕉在线播出| 日本特黄一级| 天堂网中文字幕| 国产精品1024在线永久免费| 精品久久久久久影院免费| 999精品视频在线| 麻豆污视频| 天堂网中文字幕| 国产不卡在线播放| 午夜激情视频在线播放| 天天色色色| 国产伦精品一区三区视频| 国产亚洲免费观看| 国产高清在线精品一区a| 国产麻豆精品hdvideoss| 亚洲天堂一区二区三区四区| 成人免费一级毛片在线播放视频| 亚欧乱色一区二区三区| 精品国产一区二区三区精东影业 | 一级毛片视频免费| 亚洲天堂免费| 欧美国产日韩在线| 久久福利影视| 青青青草视频在线观看| 成人影视在线播放| 国产网站在线| 免费的黄色小视频| 亚洲 男人 天堂| 久久精品店| 国产成人欧美一区二区三区的| 国产视频网站在线观看| 91麻豆精品国产自产在线| 精品久久久久久影院免费| 久久99中文字幕| 在线观看导航| 四虎影视库| 日韩专区第一页| 亚欧视频在线| 黄色短视频网站| 免费国产在线观看| a级黄色毛片免费播放视频| 免费国产在线观看| 精品国产一区二区三区久 | 高清一级片| 91麻豆爱豆果冻天美星空| 成人高清免费| 九九久久国产精品| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 日韩专区一区| 青青青草影院 | 日韩一级黄色| 亚洲精品久久玖玖玖玖| 99色视频在线| 91麻豆精品国产自产在线观看一区| 天天做人人爱夜夜爽2020| 日本伦理片网站| 亚洲第一视频在线播放| 九九精品在线播放| 亚洲天堂在线播放| 精品国产一区二区三区免费| 亚洲天堂免费| 韩国三级一区| 成人在免费观看视频国产| 高清一级片| 一级毛片看真人在线视频| 国产一区二区精品尤物| 高清一级毛片一本到免费观看| 欧美激情一区二区三区视频高清| 99热精品一区| 国产麻豆精品高清在线播放| 成人a级高清视频在线观看| 可以在线看黄的网站| 精品视频一区二区| 久久成人综合网| 午夜家庭影院| 欧美一级视频免费观看| 亚洲精品永久一区| 国产一区免费观看| 国产伦理精品| 国产国语对白一级毛片| 麻豆系列国产剧在线观看| 精品在线免费播放| 精品国产一区二区三区久久久蜜臀| 欧美激情一区二区三区视频| 成人a级高清视频在线观看| 久久精品店| 精品视频在线观看视频免费视频| 国产伦理精品| 99久久精品国产麻豆| 久久精品店| 999久久66久6只有精品| 日日日夜夜操| 青青久久国产成人免费网站| 中文字幕一区二区三区 精品| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 日韩在线观看免费完整版视频| 精品视频一区二区三区| 韩国三级香港三级日本三级la| 成人高清视频在线观看| 中文字幕一区二区三区精彩视频 | 色综合久久天天综合观看| 精品国产亚洲人成在线| 国产不卡精品一区二区三区| 午夜在线观看视频免费 成人| 91麻豆精品国产综合久久久| 欧美激情在线精品video| 91麻豆精品国产自产在线| 日本伦理片网站| 四虎精品在线观看| 国产成人女人在线视频观看 | 四虎精品在线观看| 美女免费黄网站| 久久国产影院| 成人免费一级纶理片| 国产不卡福利| 精品国产三级a| 国产精品自拍亚洲| 国产一区二区精品| 精品在线免费播放| 亚洲天堂一区二区三区四区| 九九精品在线播放| 欧美一区二区三区性| 国产a网| 色综合久久手机在线| 美女被草网站| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 |