本文目錄一覽:
- 1、在java裡面什麼是線程,什麼是主線程?主線程和子線程的關係
- 2、java中什麼叫主線程,什麼叫子線程呢?
- 3、如何實現java主線程等待子線程執行完畢之後再執行
- 4、java中主線程和子線程那個優先級高?
- 5、java線程是什麼
- 6、java主線程關掉其他線程會關掉嗎
在java裡面什麼是線程,什麼是主線程?主線程和子線程的關係
首先,java里的線程沒有主和子的說法,只有線程優先級的說法,也許你說的是進程和線程吧,下面是詳細資料
線程是指進程內的一個執行單元,也是進程內的可調度實體.與進程的區別:
(1)地址空間:進程內的一個執行單元;進程至少有一個線程;它們共享進程的地址空間;而進程有自己獨立的地址空間;
(2)資源擁有:進程是資源分配和擁有的單位,同一個進程內的線程共享進程的資源
(3)線程是處理器調度的基本單位,但進程不是.
(4)二者均可並發執行.
進程和線程都是由操作系統所體會的程序運行的基本單元,系統利用該基本單元實現系統對應用的並發性。進程和線程的區別在於:
簡而言之,一個程序至少有一個進程,一個進程至少有一個線程.
線程的劃分尺度小於進程,使得多線程程序的並發性高。
另外,進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,從而極大地提高了程序的運行效率。
線程在執行過程中與進程還是有區別的。每個獨立的線程有一個程序運行的入口、順序執行序列和程序的出口。但是線程不能夠獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。
從邏輯角度來看,多線程的意義在於一個應用程序中,有多個執行部分可以同時執行。但操作系統並沒有將多個線程看做多個獨立的應用,來實現進程的調度和管理以及資源分配。這就是進程和線程的重要區別。
進程是具有一定獨立功能的程序關於某個數據集合上的一次運行活動,進程是系統進行資源分配和調度的一個獨立單位.
線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位.線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源.
一個線程可以創建和撤銷另一個線程;同一個進程中的多個線程之間可以並發執行.
java中什麼叫主線程,什麼叫子線程呢?
程序啟動是自己就有一個線程執行自己本身的代碼,這就是主線程。
子線程就是創建之後用戶自己創建的線程。
如何實現java主線程等待子線程執行完畢之後再執行
在你的主線程中用一個join的方法,你要等待誰,就用誰調用,比如,你要等待線程a結束,就用a.join();這樣就可以了。記住哦,這條語句寫在哪個線程里,哪個線程就要等待調用這個方法的其他線程。就是說,你在主線程里寫了這條語句,那麼主線程就要等待線程a執行完後,主線程才會執行。
java中主線程和子線程那個優先級高?
在一個線程中開啟另外一個新線程,則新開線程稱為該線程的子線程,子線程初始優先級與父線程相同。不過主線程先啟動佔用了cpu資源,如果存在主線程和子線程爭搶cpu執行權的話,看運氣,誰搶到就讓誰執行。
其實設置了優先級,也無法保障線程的執行次序。只不過,優先級高的線程獲取CPU資源的概率較大,優先級低的並非沒機會執行。
線程的優先級用1-10之間的整數表示,數值越大優先級越高,默認的優先級為5。
java線程是什麼
一、操作系統中線程和進程的概念
現在的操作系統是多任務操作系統。多線程是實現多任務的一種方式。
進程是指一個內存中運行的應用程序,每個進程都有自己獨立的一塊內存空間,一個進程中可以啟動多個線程。比如在Windows系統中,一個運行的exe就是一個進程。
線程是指進程中的一個執行流程,一個進程中可以運行多個線程。比如java.exe進程中可以運行很多線程。線程總是屬於某個進程,進程中的多個線程共享進程的內存。
“同時”執行是人的感覺,在線程之間實際上輪換執行。
二、Java中的線程
在Java中,“線程”指兩件不同的事情:
1、java.lang.Thread類的一個實例;
2、線程的執行。
使用java.lang.Thread類或者java.lang.Runnable接口編寫代碼來定義、實例化和啟動新線程。
一個Thread類實例只是一個對象,像Java中的任何其他對象一樣,具有變量和方法,生死於堆上。
Java中,每個線程都有一個調用棧,即使不在程序中創建任何新的線程,線程也在後台運行着。
一個Java應用總是從main()方法開始運行,mian()方法運行在一個線程內,它被稱為主線程。
一旦創建一個新的線程,就產生一個新的調用棧。
線程總體分兩類:用戶線程和守候線程。
當所有用戶線程執行完畢的時候,JVM自動關閉。但是守候線程卻不獨立於JVM,守候線程一般是由操作系統或者用戶自己創建的
java主線程關掉其他線程會關掉嗎
Thread有守護線程和非守護線程之分。
守護線程在主線程運行結束後,也會結束運行,而非守護線程不會結束。
線程默認都是非守護線程。可以使用thread.setDeamon方法來設置。
system.exit(0); 代表退出進程,無論什麼線程都退出。
下述代碼,即使不加System.exit(0),在主線程結束後,其守護線程也會隨之中止。
public class t {
public static void main(String[] args) {
System.out.println(“kaishi”);
asd th = new asd();
th.setDaemon(true);
th.start();
System.out.println(System.currentTimeMillis());
System.out.println(“tuichu”);
System.out.println(Thread.currentThread().getName()+System.currentTimeMillis());
//System.exit(0);
}
}
class asd extends Thread {
public void run() {
while (true) {
System.out.println(Thread.currentThread().getName()+System.currentTimeMillis());
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/181395.html