為什麼感覺很多人都沒考慮過執行緒安全問題?

2021-09-01 07:45:04 字數 933 閱讀 3203

有沒有想過:

1、你的所有資料庫操作curd方法都不是執行緒安全的

2、你的所有業務類都不是執行緒安全的

3、這不是用什麼執行緒安全集合能解決的事情

4、業務是複雜的,需要同步的變數牽扯太多東西

5、考慮同步的時候又要去注意鎖的粒度,範圍

之所以沒把執行緒安全當一回事,我覺得

1、併發量不高沒有感覺到危機

2、出現了併發問題,但是由於業務的一些特性這些併發問題變成了小問題而且沒有被察覺到

3、沒有測試

實際上上面說的終究歸咎於沒有測試,當然提前要有這個意識,明白業務可能會出現什麼問題。

舉個例子來說:你在開開心心的寫業務邏輯:

//變數

//方法

方法很簡單,進門之後出門,變數儲存當前狀態。

在你開開心心的打完收工的時候,有沒有想過寫的東西實際上就是一顆定時炸 彈:非執行緒安全

這個還只是乙個非常簡單的例子,可能你一會兒就看出來怎麼去加鎖讓他變成執行緒安全的方法,這是件好事。

但是問題來了:這個例子只是非常初級的案例,回到各自的業務**上來這種問題比比皆是。而且很多變數牽涉很多其他操作,你想把乙個變數操作變成執行緒安全的,結果你發現這個變數又和其他變數有關。到最後你想把整個方法加鎖,當然這種做法是極端不推薦的。

十幾個方法操作同乙個物件裡面的若干個變數。給方法加鎖?物件加鎖?變數加鎖?所多久?有沒有想過這個加鎖的快裡面剛好有乙個資料庫操作,這個鎖又會因為這個耗時的資料庫操作影響多久?

雖然我也想把這些變數的操作方法寫到物件裡面去,然後給這個方法加鎖。這是相當好的辦法,效率也很高。

問題依然存在,不會因為你不神經質就讓問題消失。你知道那裡有個不定時炸 彈,在某個情況下可能就是因為乙個小小的變數的值不正常導致流程錯誤,然後一堆人傻乎乎的被卡死在那裡。

求指點,求打醒。我想知道大家在處理實際業務中的時候是怎麼解決這種問題的,而不是在某個變數上加同步塊。

為什麼很多人賺不到錢?

做事死板,循規蹈矩 做事兒總是按照自己的想法,而不是按照趨勢做事,注定努力的得不到效果。關鍵是,他們安於現狀,安于現有的收入與工作。只知節流,不懂開源 老實人大多都是 松鼠思維 喜歡囤貨。喜歡攢錢而不是投資。投資才能擁有更多收益,學會正確的投資,才是正解。思想保守,不敢冒險 夏蟲不可語冰,井蛙不可語...

為什麼很多人會覺得IT門檻低?

剛過完年,公司來了乙個女生,歲數大概在26左右 敲開我的辦公室門,說自己是來求職的 不是網約面試者,自己上門找來的 我 你是應聘哪個崗位的?她 我應聘軟體開發。我 你學的是哪門語言?她 我就是應聘軟體開發的。我 你應聘的是哪門語言的開發?她 我就是應聘軟體開發的。我 我知道你應聘軟體開發了,但是你會...

為什麼很多人會有「年齡焦慮」?

大部分人的年齡焦慮來自於 沒能獲得自己認為的這個年齡應當有的成就,比如認知 錢 容貌 技能 愛好等等。換句話說,你的優勢不足以抵擋年齡增長帶來的暴擊。這幾年很多人給我的感覺就是,人生巔峰停留在了高考或藝考。因為大多人總是重複著 想當年 好懷念那時 我以前很瘦很美 等等。因為從那個節點開始,很多人找不...