什麼是併發:
同時執行多個程式,或者乙個程式的多段**
在巨集觀上,存在併發的,但是在微觀上,其實不存在併發
時間片 : 在計算機中,使用時間片來實現併發的運算
在計算甲中,在最小的單位時間上
只能執行乙個運算
用來控制多個程式之間的輪轉,使得程式交替的執行
達到併發的目的
多個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 單執行緒 順序執行 如果第乙個人沒有執行完 第二個不能開始 ...