多執行緒是同時執行多個執行緒的嗎

2021-10-04 11:01:08 字數 1112 閱讀 1567

相信多執行緒各位大佬都用過,不管是在單核cpu還是多核cpu上都可以執行,但是多執行緒是同時執行多個執行緒的嗎?

併發和並行:

併發:

解釋1:當有多個執行緒在操作時,如果系統只有乙個cpu,則它根本不可能真正同時進行乙個以上的執行緒,它只能把cpu執行時間劃分成若干個時間段,再將時間 段分配給各個執行緒執行,在乙個時間段的執行緒**執行時,其它執行緒處於掛起狀。.這種方式我們稱之為併發(concurrent)。

解釋2:對於單核cpu來說,多執行緒並不是同時進行的,作業系統將時間分成了多個時間片,大概均勻的分配給執行緒,到達某個執行緒的時間段,該執行緒執行,其餘時間待命,這樣從微觀上看,乙個執行緒是走走停停的,巨集觀感官上,在某一時刻似乎所有執行緒都在執行。併發是針對時間片段來說的,在某個時間段內多個執行緒處於runnable到running之間,但每個時刻只有乙個執行緒在running,這叫做併發。(系統不斷地在各個執行緒之間來回的切換,因為系統切換的速度非常的快,所以給我們在同時執行的錯覺)

並行:當系統有乙個以上cpu時,則執行緒的操作有可能非併發。當乙個cpu執行乙個執行緒時,另乙個cpu可以執行另乙個執行緒,兩個執行緒互不搶占cpu資源,可以同時進行,這種方式我們稱之為並行(parallel)。

區別:併發和並行是即相似又有區別的兩個概念,並行是指兩個或者多個事件在同一時刻發生;而併發是指兩個或多個事件在同一時間間隔內發生。在多道程式環境下,併發性是指在一段時間內巨集觀上有多個程式在同時執行,但在單處理機系統中,每一時刻卻僅能有一道程式執行,故微觀上這些程式只能是分時地交替執行。倘若在計算機系統中有多個處理機,則這些可以併發執行的程式便可被分配到多個處理機上,實現並行執行,即利用每個處理機來處理乙個可併發執行的程式,這樣,多個程式便可以同時執行。

結論:

單核cpu是系統將時間分割成時間段交由不同的執行緒執行,所以實際單核cpu同一時間是只存在乙個執行緒的。

多核cpu可以理解為多個單核cpu,乙個cpu執行乙個執行緒,其他cpu也可以執行其他執行緒,所以多核cpu是可以同時執行多個執行緒。

Python多執行緒實現同時執行兩個while迴圈

如果想同時執行兩個while true迴圈,可以使用多執行緒threading來實現。完整 coding gbk from time import sleep,ctime import threading def muisc func while true print start playing s...

兩個執行緒同時執行案例

兩個案例同時執行案例 1 這個兩個執行緒並不是有規律的執行而是有沒有規律的交替執行 package com.test3 public class demo10 3 列印 class pig implements runnable public void run catch exception e t...

00109 同時執行多個tomcat的方案

1.使用解壓版的tomcat,不能使用安裝版的。2.修改 新的tomcat的所有埠 shutdown埠 http埠 https埠 ajp埠 3.兩個startup.bat最前面加上一句 set catalina home 當前tomcat路徑 比如 set catalina home d apach...