㈠ 進程,線程,服務和任務的區別
進程(process)是指運行中的應用程序,每一個進程都有自己槐嫌獨立的內存空間。一個應用程序可以同時啟動多個進程。例如對於IE瀏覽器程序,每打開一個IE瀏覽器窗口,就啟動了一個新的進程。同樣,每次執行JDK的java.exe程序,就啟動了一個獨立的Java虛擬機進程,該進程的任務是解析並執行Java程序代碼鉛升手。
線程(thread)是操作系統能夠進行運算的最小單位。線程被包含在進程之中,是行程中的實際運行單位。一條線程是指進程中的一個單一順序的控制流,一個進程中可以並行多個現成,每條縣城並行執行不同的任務。當進程內的多個線程同時運行時,這種運行方式稱為並發運行。許多伺服器程序,如資料庫伺服器和Web伺服器,都支持並發運行,這些伺服器能同時響應來自不同客戶的請求。
進程和線程的主要區別在於:每個進程都需要操作系統為其分配獨立的內存地址空間,而同一進程中的所有線程在同一塊地址空間中工作,這些線程可以共享同一塊內存和系統資源,比如共享一個對象或者共享已經打開的一個文件。
服務(service)也稱為守護線程,是沒有界面的,默默運行在系統後笑銷台的。他可以為應用程序提供一些更有特色的東西,比如播放MP3,開啟一個播放MP3的服務,用戶點擊開始按鈕通知服務開啟,點擊關閉按鈕通知服務關閉,如果你禁用這個服務,那別人想播放MP3那是不行的,而且服務之間是有可能互相依靠的。
任務(task)是指由軟體完成的一個活動。任務是比較抽象的概念,是一個一般性的術語,一個任務既可以是一個進程,也可以是一個線程。簡而言之,它指的是一系列共同達到某一目的的操作。例如,讀取數據並將數據放入內存中。這個任務可以作為一個進程來實現,也可以作為一個線程(或作為一個中斷任務)來實現。
㈡ 簡單說明什麼是程序 而什麼是進程
進程(Process)是最初定義在Unix等多用戶、多任務操作系統環境下用於表示應用程序在內存環境中基本執行單元的概念。以Unix操作系統為例,進程是Unix操作系統環境中的基本成分、是系統資源分配的基本單位。Unix操作系統中完成的幾乎所有用戶管理和資源分配等工作都是通過操作系統對應用程序進程的控制來實現的。
C、C++、Java等語言編寫的源程序經相應的編譯器編譯成可執行文件後,提交給計算機處理器運行。這時,處在可執行狀態中的應用程序稱為進程。從用戶角度來看,進程是應用程序的一個執行過程。從操作系統核心角度來看,進程代表的是操作系統分配的內存、CPU時間片等資源的基本單位,是為正在運行的程序提供的運行環境。進程與應用程序的區別在於應用程序作為一個靜態文件存儲在計算機系統的硬碟等存儲空間中,而進程則是處於動態條件下由操作系統維護的系統資源管理實體。
進程和程序的區別
①進程是程序的一次執行,屬於動態概念,而程序是一組有序的指令,是一種靜態概念。但進程離開了程序也就失去了存在的意義。
②一個進程可以執行一個或幾個程序z反之,同一程序可能由幾個進程同時執行。③程序可作為軟體資源長期保留,而進程是程序的一次執行過程,是暫時的。進程具有生命期。
④進程具有並發性,能與其它進程並發運行。而程序不具備這種特徵。
⑤進程是一個獨立的運行單位,也是系統進行資源分配和調度的一個獨立單位。因此,進程具有獨立性,但有時進程間又具有相互制約性。
㈢ 進程和線程有什麼區別
1、功能不同
進程是計算機中的程序關於某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單位,是操作系統結構的基礎。
線程是操作系統能夠進行運算調度的最小單位。它被包含在進程之中,是進程中的實際運作單位。
2、工作原理不同
在早期面向進程設計的計算機結構中,進程是程序的基本執行實體;在當代面向線程設計的計算機結構中,進程是線程的容器。程序是指令、數據及其組織形式的描述,進程是程序的實體。
線程是獨立調度和分派的基本單位。線程可以為操作系統內核調度的內核線程,如Win32線程;由用戶進程自行調度的用戶線程,如Linux平台的POSIX Thread;或者由內核與用戶進程,如Windows 7的線程,進行混合調度。
3、作用不同
進程是操作系統中最基本、重要的概念。是多道程序系統出現後,為了刻畫系統內部出現的動態情況,描述系統內部各道程序的活動規律引進的一個概念,所有多道程序設計操作系統都建立在進程的基礎上。
通常在一個進程中可以包含若干個線程,它們可以利用進程所擁有的資源。在引入線程的操作系統中,通常都是把進程作為分配資源的基本單位,而把線程作為獨立運行和獨立調度的基本單位。
(3)java什麼是進程擴展閱讀
進程是由進程式控制制塊,程序段,數據段三部分組成。一個進程可以包含若干線程(Thread),線程可以幫助應用程序同時做幾件事(比如一個線程向磁碟寫入文件,另一個則接收用戶的按鍵操作並及時做出反應,互相不幹擾)。
在程序被運行後,系統首先要做的就是為該程序進程建立一個默認線程,然後程序可以根據需要自行添加或刪除相關的線程。是可並發執行的程序。
在一個數據集合上的運行過程,是系統進行資源分配和調度的一個獨立單位,也是稱活動、路徑或任務,它有兩方面性質:活動性、並發性。
進程可以劃分為運行,阻塞,就緒三種狀態,並隨一定條件而相互轉化,就緒運行,運行阻塞,阻塞就緒。
進程為應用程序的運行實例,是應用程序的一次動態執行。看似高深,我們可以簡單地理解為:它是操作系統當前運行的執行程序。
在系統當前運行的執行程序里包括:系統管理計算機個體和完成各種操作所必需的程序;用戶開啟、執行的額外程序,當然也包括用戶不知道,而自動運行的非法程序(它們就有可能是病毒程序)。
㈣ java進程和線程的區別
一個java程序就是一個進程,一個java進程裡面可以有一個或多個java線程。
舉個例子,我用java開發了一個簡單的聊天室,這個聊天擾陪室就可以看作一個進程。這個聊天室,我有兩個功能,一個功能是我不停的請求伺服器,如果有新的聊天內容則更新我聊天室里的聊天記錄,這就是冊芹一個進程。我在更新這個聊天記錄的同時,我也可以給對方發送聊天內容,這兩塊是幾乎同時可以進行的,那麼,我給對方發送聊天內容的這個功能也可以看作州李畢一個進程,這兩天進程可以同時進行,相互不影響,但他們都是在java開發的聊天室這個進程裡面。
如果我的回答對您有幫助,請採納以幫助更多的人,如果您還有其它的問題,可以關注我,私信我,謝謝!
㈤ java.exe 是什麼進程!
描述: java.exe是Sun Microsystems公司的相關網路協議軟體。通常基於Internet Explorer工作 在一般情況而言,它用到伺服器架設所需要一項組件。
㈥ Java進程怎麼實現
Java中多進程編程的實現,和多線程一樣,多進程同樣是實現並發的一種方式,需要的朋友可以參考下
1.Java進程的創建
Java提供了兩種方法用來啟動進程或其它程序:
(1)使用Runtime的exec()方法
(2)使用ProcessBuilder的start()方法
1.1 ProcessBuilder
ProcessBuilder類是J2SE 1.5在java.lang中新添加的一個新類,此類用於創建操作系統進程,它提供一種啟動和管理進程(也就是應用程序)的方法。在J2SE 1.5之前,都是由Process類處來實現進程的控制管理。
每個 ProcessBuilder 實例管理一個進程屬性集。start() 方法利用這些屬性創建一個新的 Process 實例。start() 方法可以從同一實例重復調用,以利用相同的或相關的屬性創建新的子進程。
每個進程生成器管理這些進程屬性:
命令 是一個字元串列表,它表示要調用的外部程序文件及其參數(如果有)。在此,表示有效的操作系統命令的字元串列表是依賴於系統的。例如,每一個總體變數,通常都要成為此列表中的元素,但有一些操作系統,希望程序能自己標記命令行字元串——在這種系統中,Java 實現可能需要命令確切地包含這兩個元素。
環境 是從變數 到值 的依賴於系統的映射。初始值是當前進程環境的一個副本(請參閱 System.getenv())。
工作目錄。默認值是當前進程的當前工作目錄,通常根據系統屬性 user.dir 來命名。
redirectErrorStream 屬性。最初,此屬性為 false,意思是子進程的標准輸出和錯誤輸出被發送給兩個獨立的流,這些流可以通過 Process.getInputStream() 和 Process.getErrorStream() 方法來訪問。如果將值設置為 true,標准錯誤將與標准輸出合並。這使得關聯錯誤消息和相應的輸出變得更容易。在此情況下,合並的數據可從 Process.getInputStream() 返回的流讀取,而從 Process.getErrorStream() 返回的流讀取將直接到達文件尾。
㈦ java請解釋程序、進程和線程這三個概念,可以舉例或比喻說明。同時寫出線程的五種狀態。
程序是為實現特定目標或解決特定問題而用計算機語言編寫的命令序列的集合,
進程是指在操舉手族作系統結構的基礎;是一個正在執行的程序;計算機中正在運行的程序實例;
線正弊程是指"進程"中某個單一順序的控制流。也被稱為輕量進程
線程狀態
NEW
至今尚未啟動的線程處於這種狀態。
RUNNABLE
正在 Java 虛擬機中執行的線程處於這種狀態。
BLOCKED
受阻塞並等待某個監視器鎖的線程處於這種狀態。
WAITING
無限期地等待另一個線程來執行某一特定操作的線程處於這種狀態。
TIMED_WAITING
等待另一個線程來執行取決於指定等待時間的操薯神作的線程處於這種狀態。
TERMINATED
已退出的線程處於這種狀態。
㈧ Java進程和線程有什麼區別
概念】
進程:是並發執行的程序在執行過程中分配和管理資源的基本單位,競爭計算機系統資源的基本單位。
線程:是進程的一個執行單元,是進程內科調度實體。比進程更小的獨立運行的基本單位。線程也被稱為輕量級進程。
一個程序由一個或多個進程組成,一個進程由一個或多個線程組成。1
【進程 線程的區別】
1.地址空間:
進程之間是獨立的地址空間,但同一進程的線程共享本進程的地址空間。1
2.資源佔用
同一進程內的線程共享本進程的資源如內存、I/O、cpu等,但是進程之間的資源是獨立的。1
3.健壯性
一個進程崩潰後,在保護模式下不會對其他進程產生影響;
一個線程崩潰整個進程都死掉,所以多進程要比多線程健壯。123
4.執行過程
進程可以獨立執行,且每個獨立的進程程有一個程序運行的入口、順序執行序列和程序入口。
線程不能獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。線程是處理器調度的基本單位,但是進程不是。123
5.並發和資源消耗
兩者均可並發執行。
進程切換時,消耗的資源大,效率高。所以涉及到頻繁的切換時,使用線程要好於進程。
如果要求同時進行並且又要共享某些變數的並發操作,只能用線程不能用進程
㈨ java 什麼是進程
。。。。。。。。。。。
進程是, 操作系統級別的,分配內存的,任務單位
線程是,程序內部的,共享進程內存的,執行單位
進程是一個項目經理,線程是一堆程序員
項目經理從 老闆 那裡 拿到 資源和任務,然後各個程序員去干
㈩ 進程和線程分別怎麼理解
說法一:進程是具有一定獨立功能的程序關於某個數據集合上的一次運行活動,進程是系統進行資源分配和調度的一個獨立單位.
線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位.線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源.
一個線程可以創建和撤銷另一個線程;同一個進程中的多個線程之間可以並發執行
說法二:進程和線程都是由操作系統所體會的程序運行的基本單元,系統利用該基本單元實現系統對應用的並發性。進程和線程的區別在於:
簡而言之,一個程序至少有一個進程,一個進程至少有一個線程.
線程的劃分尺度小於進程,使得多線程程序的並發性高。
另外,進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,從而極大地提高了程序的運行效率。
線程在執行過程中與進程還是有區別的。每個獨立的線程有一個程序運行的入口、順序執行序列和程序的出口。但是線程不能夠獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。
從邏輯角度來看,多線程的意義在於一個應用程序中,有多個執宏隱悉行部分可以同時執行。但操作系統並沒有將多個線程看做多個獨立的應用,來實現進程的調度和管理以及資源分配。這就是進程和線程的重要區別。
說法三:多線程共存於應用程序中是現代操作系統中的基本特徵和重要標志。用過UNIX操作系統的讀者知道進程,在UNIX操作系統中,每個應用程序的執行都在操作系統內核中登記一個進程標志,操作系統根據分配的標志對應用程序的執行進行調度和系統資源分配,但進程和線程有什麼區別呢?
進程和線程都是由操作系統所體會的程序運行的基本單元,系統利用該基本單元實現系統對應用的並發性。進程和線程的區別在於:
線程的劃分尺度小於進程,使得多線程程序的並發性搞。
另外,進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,蔽乎從而極大地提高了程序的運行效率。
線程在執行過程中與進程還是有區別的。每個獨立的線程有一個程序運行的入口、順序執行序列和程序的出口。但是線程不能夠獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。
從邏輯角度來看,多線程的意義在於一個應用程序中,有多個執行部分可以同時執行。但操作系統並沒有將多個線程看做多個獨立的應用,來實現進程的調度和管理以及資源分配。這就是進程和線程的重要區別。
進程(Process)是最初定義在Unix等多用戶、多任務操作系統環境下用於表示應用程序在內存環境中基本執行單攜遲元的概念。以Unix操作系統為例,進程是Unix操作系統環境中的基本成分、是系統資源分配的基本單位。Unix操作系統中完成的幾乎所有用戶管理和資源分配等工作都是通過操作系統對應用程序進程的控制來實現的。
C、C++、Java等語言編寫的源程序經相應的編譯器編譯成可執行文件後,提交給計算機處理器運行。這時,處在可執行狀態中的應用程序稱為進程。從用戶角度來看,進程是應用程序的一個執行過程。從操作系統核心角度來看,進程代表的是操作系統分配的內存、CPU時間片等資源的基本單位,是為正在運行的程序提供的運行環境。進程與應用程序的區別在於應用程序作為一個靜態文件存儲在計算機系統的硬碟等存儲空間中,而進程則是處於動態條件下由操作系統維護的系統資源管理實體。多任務環境下應用程序進程的主要特點包括:
●進程在執行過程中有內存單元的初始入口點,並且進程存活過程中始終擁有獨立的內存地址空間;
●進程的生存期狀態包括創建、就緒、運行、阻塞和死亡等類型;
●從應用程序進程在執行過程中向CPU發出的運行指令形式不同,可以將進程的狀態分為用戶態和核心態。處於用戶態下的進程執行的是應用程序指令、處於核心態下的應用程序進程執行的是操作系統指令。
在Unix操作系統啟動過程中,系統自動創建swapper、init等系統進程,用於管理內存資源以及對用戶進程進行調度等。在Unix環境下無論是由操作系統創建的進程還要由應用程序執行創建的進程,均擁有唯一的進程標識(PID)。
說法四:應用程序在執行過程中存在一個內存空間的初始入口點地址、一個程序執行過程中的代碼執行序列以及用於標識進程結束的內存出口點地址,在進程執行過程中的每一時間點均有唯一的處理器指令與內存單元地址相對應。
Java語言中定義的線程(Thread)同樣包括一個內存入口點地址、一個出口點地址以及能夠順序執行的代碼序列。但是進程與線程的重要區別在於線程不能夠單獨執行,它必須運行在處於活動狀態的應用程序進程中,因此可以定義線程是程序內部的具有並發性的順序代碼流。
Unix操作系統和Microsoft Windows操作系統支持多用戶、多進程的並發執行,而Java語言支持應用程序進程內部的多個執行線程的並發執行。多線程的意義在於一個應用程序的多個邏輯單元可以並發地執行。但是多線程並不意味著多個用戶進程在執行,操作系統也不把每個線程作為獨立的進程來分配獨立的系統資源。進程可以創建其子進程,子進程與父進程擁有不同的可執行代碼和數據內存空間。而在用於代表應用程序的進程中多個線程共享數據內存空間,但保持每個線程擁有獨立的執行堆棧和程序執行上下文(Context)。
基於上述區別,線程也可以稱為輕型進程 (Light Weight Process,LWP)。不同線程間允許任務協作和數據交換,使得在計算機系統資源消耗等方面非常廉價。
線程需要操作系統的支持,不是所有類型的計算機都支持多線程應用程序。Java程序設計語言將線程支持與語言運行環境結合在一起,提供了多任務並發執行的能力。這就好比一個人在處理家務的過程中,將衣服放到洗衣機中自動洗滌後將大米放在電飯鍋里,然後開始做菜。等菜做好了,飯熟了同時衣服也洗好了。
需要注意的是:在應用程序中使用多線程不會增加 CPU 的數據處理能力。只有在多CPU 的計算機或者在網路計算體系結構下,將Java程序劃分為多個並發執行線程後,同時啟動多個線程運行,使不同的線程運行在基於不同處理器的Java虛擬機中,才能提高應用程序的執行效率。