03.07 請問多線程的優點和缺點是什麼?

SH_副村_妖精-刺刺


多線程簡介

現在的高級語言如Java、Python、C++、C#等都支持多線程,因為現在的計算機基本上都是多核CPU,所以多線程本質上是為了充分的利用CPU的資源,不讓計算的CPU過分閒置。

我們在編程的時候,多線程屬於一門語言的高級特性,同時也是一把雙刃劍,用好了可以極大地提高我們的應用程序性能,如果無法很好使用的話,可能會導致程序性能下降、死鎖等問題,嚴重的情況下會使得CPU資源耗盡,服務宕機。

因此如果對多線程的特性掌握不是很熟悉的情況下,儘量不要採用多線程去實現業務。

下面簡單歸納一下多線程的優缺點。

優點

  1. 在I/O型業務情況下,可以使用多線程很好的提升應用程序的性能;

  2. 大幅提升應用程序的性能(正確使用的情況下);

  3. 充分利用CPU的資源,避免操作系統資源調度等待時間過長;

  4. 高併發業務下,可以使用多線程將一個任務拆分為多個任務同時執行。


缺點

  1. 編程語言複雜,對開發人員要求較高,學習成本相對較高;

  2. 多線程創建過多,會造成頻繁的上下文切換,導致應用程序性能下降;

  3. 線程的創建需要更多的內存空間(不過對現代計算機來說這點內存消耗無所謂了)

  4. 多線程的運行需要考慮好共享數據的讀寫安全問題。

線程相關概念

進程是資源分配的最小單位,線程是CPU調度的最小單位。

進程是程序的一次運行活動,是系統資源分配和調度的一個獨立單位,有獨立的地址空間和系統資源。

線程是“輕量級進程”,是進程的一個實體,是CPU調度的基本單位。多個線程共享同一個進程的資源。


java架構設計


一般有多進成多線程和攜程三種併發操作。多線程的優點:多線程來說,就是將程序進行多個線程併發了一個操作。它的主要目的是實現了一個併發的效果。也就是說將程序執行的同時可以去執行另一個操作,這樣的話對於用戶來說就是說不會在單一一個線程的操作裡邊兒進行阻塞。程序的一個運行效率就會大大提高。多線程的缺點:因為多線程對於數據操作,它是兩個幾乎同時的操作。說對於數據上鎖是一個重要的問題。同時多線程會消耗系統的資源。他就是需要佔用大量的一個內存空間。


程序周


多線程處理快,但是編程比較複雜,要考慮資源競爭


分享到:


相關文章: