多執行緒基礎

2021-07-13 06:41:18 字數 1100 閱讀 5318

什麼是併發:

同時執行多個程式,或者乙個程式的多段**

在巨集觀上,存在併發的,但是在微觀上,其實不存在併發

時間片 :   在計算機中,使用時間片來實現併發的運算

在計算甲中,在最小的單位時間上

只能執行乙個運算

用來控制多個程式之間的輪轉,使得程式交替的執行

達到併發的目的

多個cpu  多個核心  才能實現真正的併發

程序和執行緒的概念:

程序

在作業系統中,執行的每乙個程式 都可以認為是乙個程序

執行緒

能夠併發的執行**

乙個程序是由多個執行緒組成的

並不是說  你一次 我一次  而是通過時間片實現切換

當且僅當 時間到了  才進行執行緒間的切換

如何實現多執行緒(兩種方法)?

方法1、繼承thread  類,重寫run方法,通過start方法開啟執行緒

可以手動呼叫run方法,但是它不是乙個執行緒

每個執行緒只能開啟一次,如果想多次開啟,需要重新建立物件

方法2、實現runnable介面,重寫run方法,通過start方法開啟執行緒

a:testthreada

publicclasstestthreadaextendsthread

}publicstaticvoidmain(string args)

}}b:testthreadb

publicclasstestthreadb

}classmyrunnableimplementsrunnable}}

多執行緒基礎

對於多執行緒程式設計,很多人概念不清,寫 的時候要麼是處處加鎖,影響效能不說,還容易莫名其妙的死鎖,還有人對多執行緒敬而遠之。所以學習多執行緒程式設計最重要的不是學習 api,而是理解什麼才是多執行緒安全的 從例子說起 include include long global1 0 volatile ...

多執行緒基礎

多執行緒的最底層依賴於unsafe的compareandswap cas 和locksupport的park和unpark操作。cas需要傳遞兩個引數 expect和update。先跟第乙個引數expect進行比較,如果等於第乙個引數,那麼就將該值設定為第二個引數,這是由硬體提供的原子操作,所以不會...

多執行緒基礎

coding utf 8 import requests import threading import sys from time import sleep reload sys sys.setdefaultencoding utf 8 單執行緒 順序執行 如果第乙個人沒有執行完 第二個不能開始 ...