請問多線程的優點和缺點是什么?
多線程簡介
現在的高級語言如Java、Python、C++、C#等都支持多線程,因為現在的計算機基本上都是多核CPU,所以多線程本質上是為了充分的利用CPU的資源,不讓計算的CPU過分閑置。
我們在編程的時候,多線程屬于一門語言的高級特性,同時也是一把雙刃劍,用好了可以極大地提高我們的應用程序性能,如果無法很好使用的話,可能會導致程序性能下降、死鎖等問題,嚴重的情況下會使得CPU資源耗盡,服務宕機。
因此如果對多線程的特性掌握不是很熟悉的情況下,盡量不要采用多線程去實現業務。
下面簡單歸納一下多線程的優缺點。
優點在I/O型業務情況下,可以使用多線程很好的提升應用程序的性能;
大幅提升應用程序的性能(正確使用的情況下);
充分利用CPU的資源,避免操作系統資源調度等待時間過長;
高并發業務下,可以使用多線程將一個任務拆分為多個任務同時執行。
缺點編程語言復雜,對開發人員要求較高,學習成本相對較高;
多線程創建過多,會造成頻繁的上下文切換,導致應用程序性能下降;
線程的創建需要更多的內存空間(不過對現代計算機來說這點內存消耗無所謂了)
多線程的運行需要考慮好共享數據的讀寫安全問題。
線程相關概念進程是資源分配的最小單位,線程是CPU調度的最小單位。
進程是程序的一次運行活動,是系統資源分配和調度的一個獨立單位,有獨立的地址空間和系統資源。
線程是“輕量級進程”,是進程的一個實體,是CPU調度的基本單位。多個線程共享同一個進程的資源。