更新時間:2021-05-08 10:35:01 來源:動力節(jié)點 瀏覽999次
1.進程
進程是操作系統(tǒng)中運行的一個任務(wù)(一個應(yīng)用程序在一個進程中),進程(process)是一塊包含了某些資源的內(nèi)存區(qū)域,操作系統(tǒng)利用進程把它的工作劃分為一些功能單元。進程中包含的一個或多個執(zhí)行單元稱為線程。進程還有一個私有的虛擬內(nèi)存空間,該空間僅能被它所包含的線程訪問。線程只能歸屬一個進程并且它只能訪問該進程所擁有的資源。當操作系統(tǒng)創(chuàng)建一個進程后,該進程會主動申請一個主線程。
2.線程
一個線程是一個進程的順序執(zhí)行流。同類的多個線程共享一塊內(nèi)存空間和一組系統(tǒng)資源,線程本身有一個供程序執(zhí)行時的堆棧。線程在切換時負荷小,因此,線程也被稱為輕負荷進程,一個進程中可以包含多個線程。
3.進程和線程的區(qū)別
一個進程至少有一個線程。線程的劃分尺度小于進程,使得多線程程序的并發(fā)性高。另外,進程在執(zhí)行過程中擁有獨立的內(nèi)存單元,而多個線程共享內(nèi)存,從而極大地提高了程序運行效率。線程在執(zhí)行過程中與進程的區(qū)別在于每個獨立的線程有個程序運行入口、順序執(zhí)行序列和程序出口。但是線程不能獨立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個線程執(zhí)行控制。從邏輯角度看,多線程的意義在于一個應(yīng)用程序中,有多個執(zhí)行部分共同執(zhí)行一個資源。
4.并發(fā)原理
多個線程“同時”運行只是我們感觀上的一種表現(xiàn)。事實上線程是并發(fā)運行的,操作系統(tǒng)將時間劃分為很多時間段,盡可能的均勻分配給每一個線程,獲取到時間片的線程被CPU執(zhí)行,其他則一直在等待。所以微觀上是走走停停,宏觀上都在運行。這種現(xiàn)象叫并發(fā),但不是絕對意義上的同時發(fā)生。實則操作系統(tǒng)里面“同一時刻”只有一個線程在執(zhí)行,但是處理速率快,效果上是并發(fā)運行。
5.Thread創(chuàng)建線程
Thread類是線程類,其每一個實例表示一個可以并發(fā)運行的線程。我們可以通過繼承該類并重寫run方法來定義一個具體的線程,其中要重寫run方法是為了線程要執(zhí)行的邏輯。啟動線程時調(diào)用線程的start方法,start方法會將該線程納入線程調(diào)度,使當前線程可以開始并發(fā)運行,當該線程獲得時間片后會自動開始執(zhí)行run方法內(nèi)容。
public class TestThread extends Thread{
public void run(){
for(int i = 0; i < 100; i++){
System.out.println(''我是線程'');
}
}
}
定義好后實例化該對象,調(diào)用其start方法,啟動線程
TestThread thread = new TestThread();
thread.start();
6.Runnable創(chuàng)建線程
實現(xiàn)Runnable接口并重寫run方法來定義線程體,然后在創(chuàng)建線程的時候?qū)unnable的實例傳入并啟動線程。這樣做的好處在于將線程和線程執(zhí)行的任務(wù)分離開解耦合。同時Java是單繼承,實現(xiàn)接口可以更好的讓該類去繼承其他類。
public class TestRunnable implements Runnable{
public void run(){
for(int i = 0; i < 100; i++){
System.out.println(''我是線程'');
}
}
}
定義好后,可以實例化該實現(xiàn)類并調(diào)用start方法啟動線程
Thread thread = new Thread(new TestRunnable());
thread.start();
7.內(nèi)部類創(chuàng)建線程
通常我們可以通過匿名內(nèi)部類的方式創(chuàng)建線程,使用該方式可以簡化編寫代碼的復(fù)雜度,當一個線程僅需要一個實例時我們通常使用這種方式來創(chuàng)建。
Thread thread = new Thread(){
public void run(){
//線程體
}
};
thread.start();
Runnable thread = new Runnable(){
public void run(){
//線程體
}
};
thread.start();
以上就是動力節(jié)點小編介紹的"Java多線程并發(fā)原理",希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為您服務(wù)。
初級 202925
初級 203221
初級 202629
初級 203743