閱讀376 返回首頁    go 阿裏雲 go 技術社區[雲棲]


線程帶來的風險(第一章)

線程帶來的風險

  1. 安全性問題 ----> 安全性的含義是“永遠不發生糟糕的事” 線程安全問題非常複雜,在沒有充分同步的情況下,多個線程中的操作順序是無法預測的。 如果沒有同步,那麼無論是編譯器、硬件還是運行時,都可以隨意安排操作的執行順序和時間,例如對寄存器或者處理器中的變量進行緩存(緩存後成為當前線程的局部變量),而這些被緩存的變量對於其他線程來說是暫時(甚至永久)不可見的。
  2. 活躍性問題 ----> 活躍性的含義是“正確地事最終會發生” 多線程環境中活躍性問題的常見形式:死鎖、活鎖、饑餓
  3. 性能問題 性能問題與活躍性密切相關,活躍性意味著某件正確地事最終會發生,性能問題則關注讓其盡快發生。性能問題包含多個方麵,例如服務時間過長、響應不靈敏,吞吐率過低等。

Java中使用鎖來實現同步、原子操作等功能,但鎖的使用會帶來性能方麵的問題。當執行時間較長的計算或者可能無法快速完成的操作時(例如網絡IO、控製台IO),一定不要持有鎖。

最後更新:2017-11-04 17:33:34

  上一篇:go  線程安全性(第二章)
  下一篇:go  php獲取今日頭條視頻地址並插入織夢cms數據庫