如今框架橫行,Spring 已經(jīng)是非常成熟的容器體系,我們?cè)谌粘i_(kāi)發(fā) JavaWeb 的工作中,大多已經(jīng)不需要考慮多線程的問(wèn)題,這些問(wèn)題都已經(jīng)在Spring容器中實(shí)現(xiàn),框架的意義就是讓程序員們可以專(zhuān)注于邏輯的實(shí)現(xiàn)。然而這種編程工作是非常無(wú)趣無(wú)味的,如果長(zhǎng)期從事這個(gè)工作,技術(shù)不一定見(jiàn)長(zhǎng),業(yè)務(wù)知識(shí)一定很熟悉!= =但說(shuō)實(shí)在的,我并不喜歡這類(lèi)工作,因?yàn)檫@種工作大多情況下知識(shí)對(duì)代碼的簡(jiǎn)單復(fù)制,或是簡(jiǎn)單的一些編寫(xiě),并沒(méi)有什么真正的創(chuàng)造性,不會(huì)給人成就感。

  需求背景


  我們的項(xiàng)目,是 Mysql+ElasticSearch 做的一個(gè)數(shù)據(jù)庫(kù)和搜索引擎,項(xiàng)目經(jīng)理提出需要做一個(gè)用于重建 ES 搜索數(shù)據(jù)的接口,這個(gè)任務(wù)很光榮的交給了我。

  在功能的編寫(xiě)過(guò)程當(dāng)中,我突然思考這樣一個(gè)問(wèn)題,因?yàn)槲覀?Web 項(xiàng)目本身是多線程的,那如果在同一時(shí)間段,有多個(gè)請(qǐng)求同時(shí)發(fā)起,那同時(shí)發(fā)起 ES 的重建,對(duì)于 ES 來(lái)說(shuō),可能會(huì)產(chǎn)生一些莫名其妙的問(wèn)題。

  所以我感到非常高興,因?yàn)檫@個(gè)問(wèn)題,似乎不是聽(tīng)起來(lái)的那么簡(jiǎn)單。于是乎我想到了,要加入同步鎖了。

最開(kāi)始的思考:


  最開(kāi)始我只是很簡(jiǎn)單的想,直接在對(duì)應(yīng)的 Service 層寫(xiě)一個(gè)方法,然后直接加一個(gè)

synchronized(this)

在整個(gè)方法體上?!   ?/p>

1 @Override2     public synchronized int rebuiltBountyData() throws Exception {3         ...4     }

 

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式