java網(wǎng)絡(luò)接口對(duì)傳入的參數(shù)進(jìn)行加鎖

第一次寫技術(shù)文檔绅喉,因?yàn)閾?dān)心很多以前做過的東西茶敏,又要接著做一遍。所以開始寫一些東西記錄一下痊班。

問題:如果寫一個(gè)接口,其他人調(diào)用這個(gè)結(jié)果的時(shí)候哲鸳,根據(jù)接口的參數(shù)來(lái)加鎖臣疑。

環(huán)境:因?yàn)闆]有寫demo 的習(xí)慣,所以都是直接在真實(shí)項(xiàng)目里面做的示例徙菠。

        后臺(tái):Spring boot 寫的接口

        前臺(tái):vue 寫的網(wǎng)絡(luò)請(qǐng)求

話不多說(shuō):上代碼

   @GetMapping(value = "/he/{username}")
    public  String setexcle2(@PathVariable String username) {
    StringBuffer sb=new StringBuffer();
    sb.append(username);

    synchronized(sb.toString().intern()) {
        System.out.println(username);
        try {
            //延時(shí)3秒執(zhí)行
            Thread.currentThread().sleep(3000);
        } catch (InterruptedException ie) {
            ie.printStackTrace();
        }
        String username2 = username + "運(yùn)算結(jié)果:::::: ";
        System.out.println(username2);
    }
    return "你好讯沈!世界" + username;
}

這個(gè)就是一個(gè)get請(qǐng)求的接口:接口地址是 本機(jī)ip:8080/main/he,當(dāng)然這個(gè)不重要。重要的是里面的方法婿奔。

Paste_Image.png

這就是關(guān)鍵缺狠。
原因是
再看String

JVM內(nèi)存區(qū)域里面有一塊常量池,關(guān)于常量池的分配:

JDK6的版本萍摊,常量池在持久代PermGen中分配
JDK7的版本挤茄,常量池在堆Heap中分配
字符串是存儲(chǔ)在常量池中的,有兩種類型的字符串?dāng)?shù)據(jù)會(huì)存儲(chǔ)在常量池中:

1.編譯期就可以確定的字符串冰木,即使用""引起來(lái)的字符串穷劈,比如String a = "123"、String b = "1" + B.getStringDataFromDB() + "2" + C.getStringDataFromDB()片酝、這里的"123"囚衔、"1"、"2"都是編譯期間就可以確定的字符串雕沿,因此會(huì)放入常量池练湿,而B.getStringDataFromDB()、C.getStringDataFromDB()這兩個(gè)數(shù)據(jù)由于編譯期間無(wú)法確定审轮,因此它們是在堆上進(jìn)行分配的

2.使用String的intern()方法操作的字符串肥哎,比如String b = B.getStringDataFromDB().intern(),盡管B.getStringDataFromDB()方法拿到的字符串是在堆上分配的疾渣,但是由于后面加入了intern()篡诽,因此B.getStringDataFromDB()方法的結(jié)果,會(huì)寫入常量池中

3.常量池中的String數(shù)據(jù)有一個(gè)特點(diǎn):每次取數(shù)據(jù)的時(shí)候榴捡,如果常量池中有杈女,直接拿常量池中的數(shù)據(jù);如果常量池中沒有吊圾,將數(shù)據(jù)寫入常量池中并返回常量池中的數(shù)據(jù)达椰。

因此回到我們之前的場(chǎng)景,使用StringBuilder拼接字符串每次返回一個(gè)new的對(duì)象项乒,但是使用intern()方法則不一樣:

接下來(lái)就是測(cè)試了:
在vue里面進(jìn)行測(cè)試啰劲,我們循環(huán)5次,每次里面放2個(gè)請(qǐng)求檀何,一個(gè)相同蝇裤,一個(gè)不同廷支。看看執(zhí)行的結(jié)果栓辜。

         posthttp(){
                 let that = this;
                      for(var i=0;i<5;i++){
                   that.$http({
                    url: "http://localhost:8090/main/he/哇哈哈"+(i),
                      method: 'get',
               }).then((res) => {
      console.log(res);
    }).catch((res) => {
      console.log('SideSec.vue :', res);
    });
    that.$http({
      url: "http://localhost:8090/main/he/測(cè)試",
      method: 'get',
    }).then((res) => {
      console.log(res);
    }).catch((res) => {
      console.log('SideSec.vue :', res);
    });
  }

最后我們執(zhí)行這個(gè)vue程序 恋拍。
npm run dev

Paste_Image.png

最后我們看看控制臺(tái)的打印

Paste_Image.png

可以看出 請(qǐng)求參數(shù)為測(cè)試的 都是加了鎖 同步的。哇哈哈1 哇哈哈2 就是沒有同步的啃憎。

忽然感覺寫的很爛芝囤,準(zhǔn)備把名字改了。

Paste_Image.png

這樣我們就能看出這里李四是同步了的辛萍。

第一次寫技術(shù)博客悯姊,爛到家了,見諒贩毕。見諒悯许。見諒。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末辉阶,一起剝皮案震驚了整個(gè)濱河市先壕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌谆甜,老刑警劉巖垃僚,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異规辱,居然都是意外死亡谆棺,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門罕袋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)改淑,“玉大人,你說(shuō)我怎么就攤上這事浴讯《湎模” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵榆纽,是天一觀的道長(zhǎng)仰猖。 經(jīng)常有香客問我,道長(zhǎng)奈籽,這世上最難降的妖魔是什么饥侵? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮唠摹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘奉瘤。我一直安慰自己勾拉,他們只是感情好煮甥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著藕赞,像睡著了一般成肘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上斧蜕,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天双霍,我揣著相機(jī)與錄音,去河邊找鬼批销。 笑死洒闸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的均芽。 我是一名探鬼主播丘逸,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼掀宋!你這毒婦竟也來(lái)了深纲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤劲妙,失蹤者是張志新(化名)和其女友劉穎湃鹊,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體镣奋,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡币呵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了唆途。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片富雅。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖肛搬,靈堂內(nèi)的尸體忽然破棺而出没佑,到底是詐尸還是另有隱情,我是刑警寧澤温赔,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布蛤奢,位于F島的核電站,受9級(jí)特大地震影響陶贼,放射性物質(zhì)發(fā)生泄漏啤贩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一拜秧、第九天 我趴在偏房一處隱蔽的房頂上張望痹屹。 院中可真熱鬧,春花似錦枉氮、人聲如沸志衍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)楼肪。三九已至培廓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間春叫,已是汗流浹背肩钠。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留暂殖,地道東北人价匠。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像央星,于是被迫代替她去往敵國(guó)和親霞怀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Java內(nèi)存分配與管理是Java的核心技術(shù)之一莉给,一般Java在內(nèi)存分配時(shí)會(huì)涉及到以下區(qū)域: 寄存器:我們?cè)诔绦蛑袩o(wú)...
    yekai閱讀 331評(píng)論 0 3
  • 前言 不知道大家有沒有這樣一種感覺颓遏,程序員的數(shù)量井噴了徐矩。可能是因?yàn)榛ヂ?lián)網(wǎng)火了叁幢,也可能是各家培訓(xùn)機(jī)構(gòu)為我們拉來(lái)了大量...
    活這么大就沒飽過閱讀 2,727評(píng)論 6 26
  • 轉(zhuǎn)自:http://blog.csdn.net/jackfrued/article/details/4492194...
    王帥199207閱讀 8,529評(píng)論 3 93
  • ??需要說(shuō)明的一點(diǎn)是滤灯,這篇文章是以《深入理解Java虛擬機(jī)》第二版這本書為基礎(chǔ)的,這里假設(shè)大家已經(jīng)了解了JVM的運(yùn)...
    Geeks_Liu閱讀 14,023評(píng)論 5 44
  • 這個(gè)星期你都是上早班曼玩,下午3點(diǎn)就下班了鳞骤。星期天的那天晚上,我跟你提了個(gè)建議:你那么早下班黍判,等我下班回來(lái)就去跑步唄豫尽。...
    瑩光豬閱讀 744評(píng)論 0 0