根本區別:程序是作業系統資源分配的基本單位,而執行緒是任務排程和執行的基本單位
在開銷方面:每個程序都有獨立的**和資料空間,程式之間的切換會有較大的開銷;執行緒可以看作輕量級的程序,同一類執行緒共享**和資料空間,每個執行緒都有自己獨立的執行棧和程式計數器(pc),執行緒之間切換的開銷小。
所處環境:在作業系統中能同時執行多個程序(程式);而在同乙個程序(程式)中有多個執行緒同時執行(通過cpu排程,在每個時間片中只有乙個執行緒執行)
記憶體分配方面:系統在執行的時候會為每個程序分配不同的記憶體空間;而對執行緒而言,除了cpu外,系統不會為執行緒分配記憶體(執行緒所使用的資源來自其所屬程序的資源)執行緒組之間只能共享資源。
包含關係:沒有執行緒的程序可以看作是單執行緒的。如果乙個程序內有多個執行緒,則執行過程不是一條線的,而是多條線(執行緒)共同完成的;執行緒是程序的一部分,所以執行緒也被稱為輕權程序或者輕量級程序。
程序和執行緒的主要區別
根本區別 程序是作業系統資源分配的基本單位 資源和cpu 而執行緒是任務排程和執行的基本單位 cpu 程序的三種基本狀態 1 就緒狀態 除了cpu其他資源都有獲取 2 執行狀態 已經獲取了cpu正在執行 3 阻塞狀態 i 0 或者申請快取失敗了,暫時無法進行,會引起程序的排程,處理機會分配給其他就緒...
ArrayList,Vector主要區別
vector是執行緒安全的,但是效能比arraylist要低。arraylist,vector主要區別為以下幾點 1 vector是執行緒安全的,原始碼中有很多的synchronized可以看出,而arraylist不是。導致vector效率無法和arraylist相比 2 arraylist和ve...
notify 和notifyAll 主要區別
notify 和notifyall 都是object物件用於通知處在等待該物件的執行緒的方法。void notify 喚醒乙個正在等待該物件的執行緒。void notifyall 喚醒所有正在等待該物件的執行緒。兩者的最大區別在於 notifyall使所有原來在該物件上等待被notify的執行緒統統...