並發


1.並發和並行的區別

並發,指的是多個事情,在同一時間段內同時發生了。 並行,指的是多個事情,在同一時間點上同時發生了。

並發的多個任務之間是互相搶占資源的。 並行的多個任務之間是不互相搶占資源的、

只有在多CPU的情況中,才會發生並行。否則,看似同時發生的事情,其實都是並發執行的。

 

2.什么是高並發

  高並發是一種系統運行過程中遇到的一種短時間內遇到大量操作請求,主要發生在web系統幾種大量訪問受到大量請求(如天貓的雙十一活動)。該情況的發生會導致系統在這段時間執行大量操作,例如對資源的請求,數據庫的操作等

  

 

3.高並發的處理指標

  1.響應時間

  響應時間:系統對請求作出響應的時間,例如系統處理一個http請求需要200ms,這個200ms就是系統的響應時間內

  2.吞吐量

  吞吐量:單位時間內處理的請求數量

  3.每秒查詢率

  QPS:每秒響應請求數,在互聯網領域,這個指標和吞吐量區分沒這么明顯

  4.並發用戶數

  並發用戶數:同時承載正常使用系統功能的用戶數量,例如一個臨時通訊系統,同時在線程一定程度上代表了系統的並發用戶數

高並發和多線程的關系和區別?
“高並發和多線程”總是被一起提起,給人感覺兩者好像相等,實則 高並發 ≠ 多線程

1.多線程

多線程是java的特性,因為現在cpu都是多核多線程的,可以同時執行幾個任務,為了提高jvm的執行效率,java提供了這種多線程的機制,以增強數據

處理效率。多線程對應的是cpu,高並發對應的是訪問請求,可以用單線程處理所有訪問請求,也可以用多線程同時處理訪問請求。

在過去單CPU時代,單任務在一個時間點只能執行單一程序。之后發展到多任務階段,計算機能在同一時間點並行執行多任務或多進程。雖然並不是真

正意義上的“同一時間點”,而是多個任務或進程共享一個CPU,並交由操作系統來完成多任務間對CPU的運行切換,以使得每個任務都有機會獲得一

定的時間片運行。

再后來發展到多線程技術,使得在一個程序內部能擁有多個線程並行執行。一個線程的執行可以被認為是一個CPU在執行該程序。當一個程序運行在多

線程下,就好像有多個CPU在同時執行該程序。

總之,多線程即可以這么理解:多線程是處理高並發的一種編程方法,即並發需要用多線程實現。

2.高並發

高並發不是JAVA的專有的東西,是語言無關的廣義的,為提供更好互聯網服務而提出的概念。

典型的場景,例如:12306搶火車票,天貓雙十一秒殺活動等。該情況的發生會導致系統在這段時間內執行大量操作,例如對資源的請求,數據庫的操

作等。如果高並發處理不好,不僅僅降低了用戶的體驗度(請求響應時間過長),同時可能導致系統宕機,嚴重的甚至導致OOM異常,系統停止工作等

如果要想系統能夠適應高並發狀態,則需要從各個方面進行系統優化,包括,硬件、網絡、系統架構、開發語言的選取、數據結構的運用、算法優化、

數據庫優化等……而多線程只是其中解決方法之一。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM