天天看點

Java--程序和線程基本概念

下一篇--線程的建立和啟動

程序:

程序是處于運作中的程式,是系統進行資源配置設定的排程的獨立機關。

程序特點:

  • 獨立性:程序是系統中獨立存在的實體,它可以擁有自己獨立的資源,每個程序都有自己私有的位址空間。
  • 動态性:程序和程式的差別就是程序是正在系統中活動的指令集合。
  • 并發性:多個程序可在單個處理器上并發進行,程序之間不會互相影響。

線程:

線程是程序的組成部分,一個程序可以有多個線程,一個線程必須有一個父程序。線程使得同一個程序可一并發處理多個任務。線程可以擁有自己的程式計數器、自己的堆棧和自己的局部變量,但不擁有系統資源,它與程序中的其他線程共享程序所擁有的所有資源。線程是處理器排程的基本機關。

線程特點:

  • 線程可與其他線程共享程序中的共享變量和部分環境,互相之間協作來完成程序的任務。
  • 線程是獨立運作的,它并不知道系統中還有其他線程存在。
  • 線程的執行是搶占式的。
  • 線程的排程和管理由程序本身負責,作業系統不參與。

總結:作業系統可以同時執行多個任務,每個任務就是程序;程序可以同時執行多個任務,每個任務就是線程。

線程相對于程序的優勢:

  • 程序之間不能共享記憶體,但線程之間共享記憶體非常容易。
  • 系統建立一個程序必須配置設定獨立的記憶體空間和相關資源,但建立線程代價要小得多,是以多線程實作多任務效率更高。
  • Java語言内置了多線程功能支援,簡化了Java的多線程程式設計。

并發和并行的差別:并行是指在同一時刻,有多條指令在多個處理器上運作;并發是在同一時刻隻能有一條指令執行,但多個程序指令被快速輪換執行,使得在宏觀上具有多個程序同時執行的效果。

下一篇--線程的建立和啟動

本文參與 騰訊雲自媒體分享計劃 ,歡迎熱愛寫作的你一起參與!

本文分享自作者個人站點/部落格

https://my.oschina.net/HuoQibin/blog

複制

如有侵權,請聯系 [email protected] 删除。