java中的進程與線程
來源:互聯網
上載者:User
/*
進程:是一個正在執行中的程式。
每一個進程執行都有一個執行順序。該順序是一個執行路徑,或者叫一個控制單元。
線程:就是進程中的一個獨立的控制單元。
線程在控制著進程的執行。
一個進程中至少有一個線程。
Java VM 啟動的時候會有一個進程java.exe.
該進程中至少一個線程負責java程式的執行。
而且這個線程啟動並執行代碼存在於main方法中。
該線程稱之為主線程。
擴充:其實更細節說明jvm,jvm啟動不止一個線程,還有負責記憶體回收機制的線程。
1,如何在自訂的代碼中,自訂一個線程呢。
通過對api的尋找,java已經提供了對線程這類事物的描述。就Thread類。
建立線程的第一種方式:繼承Thread類。
步驟:
1,定義類繼承Thread。
2,複寫Thread類中的run方法。
目的:將自訂代碼儲存在run方法。讓線程運行。
3,調用線程的start方法,
該方法兩個作用:啟動線程,調用run方法。
發現運行結果每一次都不同。
因為多個線程都擷取cpu的執行權。cpu執行到誰,誰就運行。
明確一點,在某一個時刻,只能有一個程式在運行。(多核除外)
cpu在做著快速的切換,以達到看上去是同時啟動並執行效果。
我們可以形象把多線程的運行行為在互相搶奪cpu的執行權。
這就是多線程的一個特性:隨機性。誰搶到誰執行,至於執行多長,cpu說的算。
為什麼要覆蓋run方法呢。
Thread類用於描述線程。
該類就定義了一個功能,用於儲存線程要啟動並執行代碼。該儲存功能就是run方法。
也就是說Thread類中的run方法,用於儲存線程要啟動並執行代碼。
*/
class Demo extends Thread
{
public void run()
{
for(int x=0; x<60; x++)
System.out.println("demo run----"+x);
}
}
class ThreadDemo
{
public static void main(String[] args)
{
//for(int x=0; x<4000; x++)
//System.out.println("Hello World!");
Demo d = new Demo();//建立好一個線程。
//d.start();//開啟線程並執行該線程的run方法。
d.run();//僅僅是對象調用方法。而線程建立了,並沒有運行。
for(int x=0; x<60; x++)
System.out.println("Hello World!--"+x);
}
}
/*
練習:
建立兩個線程,和主線程交替運行。
*/