學好了多線程技術,程式設計師就有底氣拿23K以上的月薪

環境

java1.8、idea2018、springboot

幫助人群

java軟件工程師、java後端開發、準備面試的java軟件開發、多線程

多線程【歷史文章列表】

大家可以通過點擊文章鏈接進入這些文章,都是我自己通過實戰後總結的

目前我在開發實戰中遇到的就

  • springboot上的多線程

  • 鎖和線程關係密切

  • 鎖和線程關係密切

  • 多線程基礎概念和例子

  • 多線程Callable和Future

Callable和Future

Callable和Future解決了Runnable不能返回值或拋出異常的問題。

Future:可以用來查看任務的生命週期以及操作任務,如獲取任務結果、取消任務

方法:

  • cancel():嘗試取消任務。
  • isCancelled():
  • isDone():
  • get():返回計算結果。
  • get(timeout):可以設置超時時間。

總結

  • 5篇文章裡面建議大家收藏,面試或開發實戰都可以參考參
  • 多線程不要亂用,儘量先串行,當生產環境真的不能應付在考慮並行。
  • 面試多線程時,多多結合實戰跟面試官分講講。
學好了多線程技術,程序員就有底氣拿23K以上的月薪

線程池【概念複習】

作用:

(1)、通過重複利用線程,減少線程的創建銷燬損耗的資源

(2)、提高響應速度,任務到達時,不用重新創建線程,之間可以使用已經創建好的線程執行。

(3)、提高線程的可管理性

ThreadPoolExecutor可配置項:

  • 線程池初始大小
  • 最大大小
  • 存活時間
學好了多線程技術,程序員就有底氣拿23K以上的月薪

線程的開銷

  • 生命週期的開銷:線程的創建、調度和生命週期管理都由操作系統實現,無論在哪款操作系統下,這些操作的開銷都很可觀。
  • 內存佔用:一個線程佔用的棧資源大概在1-2M左右,那麼線程數達到千級別時這個開銷就很可觀。
  • 穩定性:不同操作系統和JVM配置下,線程數量將受到棧空間或系統的限制,過多的線程並不會再提升性能

合理配置線程池大小

  • 一般需要根據任務的類型來配置線程池大小:
  • 如果是CPU密集型任務,就需要儘量壓榨CPU,參考值可以設為 NCPU+1
  • 如果是IO密集型任務,參考值可以設置為2*NCPU

當然,這只是一個參考值,具體的設置還需要根據實際情況進行調整,比如可以先將線程池大小設置為參考值,再觀察任務運行情況和系統負載、資源利用率來進行適當調整。

學好了多線程技術,程序員就有底氣拿23K以上的月薪

學好了多線程技術,程序員就有底氣拿23K以上的月薪


分享到:


相關文章: