1、程序:就是記憶體中的一段區域,這段區域中儲存了cpu執行的機器指令以及函式執行時的堆疊資訊,要想讓程序執行,就把main函式的第一條機器指令位址寫入pc暫存器,這樣程序就執行起來了。
2、執行緒:main函式的特殊之處無非就在於是cpu執行的第乙個函式,除此之外再無特別之處,我們可以把pc暫存器指向main函式,就可以把pc暫存器指向任何乙個函式。當我們把pc暫存器指向非main函式時,執行緒就誕生了。
3、執行緒和cpu的關係:把cpu的pc暫存器指向執行緒的入口函式,這樣執行緒就可以執行起來了,這就是為什麼我們建立執行緒時必須指定乙個入口函式的原因。
4、單核下的多執行緒執行:在單核的情況下一樣可以建立出多個執行緒,原因在於執行緒是作業系統層面的實現,和有多少個核心是沒有關係的,cpu在執行機器指令時也意識不到執行的機器指令屬於哪個執行緒。即使在只有乙個cpu的情況下,作業系統也可以通過執行緒排程讓各個執行緒「同時」向前推進,方法就是將cpu的時間片在各個執行緒之間來回分配,這樣多個執行緒看起來就是「同時」執行了,但實際上任意時刻還是只有乙個執行緒在執行。
5、多核下的多執行緒執行:多個核(多個cpu同時執行機器指令)分別執行指令集,真正意義上的並行。
6、如何實現執行緒安全:實現執行緒安全無外乎圍繞執行緒私有資源和執行緒共享資源來進行,你需要識別出哪些是執行緒私有,哪些是共享的,然後對症下藥就可以了。
7、執行緒共享資源:
**區和動態鏈結庫也是共享資源,但這兩個區域是不能被修改的,也就是說這兩個區域是唯讀的,因此多個執行緒使用是沒有問題的。
8、執行緒池:
Day49執行緒,執行緒安全,執行緒池
它可以是任意的物件 鎖物件 只是做乙個標記,只有持有鎖物件的執行緒才能夠進行到同步 塊。class saleticket implements runnable catch interruptedexception e 判斷是否有鎖,如果有鎖則獲得鎖,進入 塊,否則,只有在 塊外等鎖 synchro...
執行緒安全 執行緒不安全
執行緒安全是針對多執行緒來講的 如果所使用的公用變數在多執行緒下沒有被保護機制時,變數結果會和理論值不一致,這就是執行緒不安全 相反公用變數在保護機制下工作,就不會出現 隨機 變化,這時叫執行緒安全。執行緒安全 在多執行緒中使用時,不用自己做同步處理 執行緒不安全 在多執行緒中使用時,必須做執行緒同...
如何保證執行緒安全(執行緒同步)
基於衝突檢測的樂觀併發策略,通俗的說,就是先進行操作,如果沒有其他執行緒爭用共享資料,那操作就成功了。cas操作 compare and swap cas指令需要3個運算元,分別是記憶體位置v 舊的預期值a和新值b。cas指令執行時,當且僅當v符合舊的預期值a時,處理器用新值b更新v的值,否則它就不...