併發程式設計注意事項

2021-08-14 20:24:10 字數 917 閱讀 1154

一般在執行批處理的場景下,如果序列單執行緒的效率低,可以考慮併發,但是需要注意一些事情。

首先需要確定,單個執行緒執行的場景下,耗時的**塊,一般的做法是通過列印執行時間,然後優化到合適的地步。

採用多執行緒來執行任務,由於併發的不確定性以及併發引入的複雜性,要能夠保證併發處理的結果是正確的,是準確的。

既然多執行緒來執行任務,那麼任務中的重複**可以抽出來的,就放到外面,這樣任務裡面就執行不重複的**,避免重複**執行的耗時。

多執行緒的使用不能盲目加大執行緒數,等待佇列大小。要實現能夠預估單個任務執行時長,並且預估出滿足期望的執行緒大小以及佇列大小等引數。

多執行緒使用不恰當,會搶占其他處理的資源,比如cpu資源等。要關注這些影響。

多執行緒要恰當使用限速處理。因為你執行緒數增加,可能對下游服務造成一定程度的影響。因此為了保護下游服務的可用性,也要關注這個。

多執行緒執行的實時執行過程,要能夠做到實時監控,比如,自定義排程器,然後通過乙個監控執行緒,獲取排程器的實時資料,列印出日誌或者其他方式,能夠做到有資料可查。

比如:2018-01-21 12:10:21,509 error [pool-15-thread-1 ] c.c.a.f.c.monitorthread [?] - [monitor] [50/50] active: 50, completed: 1045, task: 412552, isshutdown: false, isterminated: false

有了上面的日誌資料,我們就可以根據運**況,調整執行緒數量等。當然了修改執行緒數,也要結合看當前cpu使用率和記憶體等情況,然後合理設定。如果你16核數,cpu使用了都1000%多了,那麼再調大執行緒數,反而不太好。要結合top命令(結合互動引數m和p),看cpu(s): 17.3%us和

tips:

優化的意義就是:一塊**如果放到執行千萬次的環境中,可以看到優化前後其節省了多少時間。

併發程式設計中的注意事項

獲取單例物件需要保證執行緒安全,其中的方法也要保證執行緒安全。建立執行緒或執行緒池時請指定有意義的執行緒名稱,方便出錯時回溯。執行緒資源必須通過執行緒池提供,不允許在應用中自行顯式建立執行緒。執行緒池不允許使用 executors 去建立,而是通過 threadpoolexecutor 的方式,這樣...

程式設計注意事項

1.動態輸出表頭或資料 每次輸出之前,請先清空表頭以及資料再新增。2.一般資料都要分頁,請直接加上分頁 3.重複性資料的校驗 介面接收資料 1.介面接收資料,一般型別接受 例如 string 列印日誌,之後再轉換成自己想要的格式json等。需求評審 問題一 大面問題 1.是什麼?2.怎樣玩?業務流程...

VBA程式設計 注意事項

1 在自定義函式前加上 private 關鍵字進行宣告,該函式將不會出現在 excel的 貼上函式 對話方塊中,但仍然可以在公式中運用它們。如果是專門為其他的 vba過程開發的自定義函式,則應該使用 private 關鍵字進行宣告。2 通常,使用者自定義函式後,在 貼上函式 對話方塊中將會出現在 使...