內容
1.進程
2.多進程的作用
3.線程
4.多線程作用
5.java程序的運行原理
6.Java中實現多線程的第一種方式
7.線程生命周期示意圖
一.進程
一個進程對應一個應用程序。比如:在windows操作系統啟動Word就表示啟動了一個進程?,F代的計算機都是支持多進程的,在同一個操作系統中,可以同時啟動多個進程。
二.多進程的作用
單進程計算機同一時間只能做一件事情。
對于單核計算機來講,在同一個時間點上,多個進程不能同時運行。因為計算機的CPU只能在某個時間點上做一件事。由于計算機在多個進程之間頻繁切換的切換速度極高,人們就會感覺多個進程在同時運行
多進程作用不是為了提高執行速度,而是提高CPU的使用率
注意:進程和進程之間的內存是獨立的
三.線程
線程是一個進程中的執行場景,一個進程可以啟動多個線程。比如百度服務器可以供多人同時訪問,比如一款網絡游戲可以多人同時玩(個人理解)。
四,多線程的作用
線進程不是為了提高執行速度,而是提高應用程序的使用率
注意:線程和線程共享“堆內存和方法區內存”,棧內存是獨立的,一個線程一個棧。
五.Java程序的運行原理
java命令會啟動java虛擬機,啟動JVM,等于啟動了一個應用程序,表示啟動了一個進程,該進程會自動啟動一個“主線程”,然后主線程去調用某個類的main方法,所以main方法運行在主線程中。
六.java中實現多線程的第一種方式
1.步驟
定義線程
1.繼承java.lang.Thread
2.重寫run方法
創建線程
啟動線程
2.使用示例
public class 測試程序 {
public static void main(String[] args) throws Exception {
//1.創建一個線程
Thread t = new Processor();
//啟動
t.start();//這段代碼執行瞬間結束,用來告訴JVM再分配一個新的棧給t線程
//run不需要程序員手動調用,系統線程啟動之后自動調用run方法
//t.run();//這是普通方法調用,這樣做沒有分配新的棧,程序只有一個線程,run方法結束之后,下面的程序才能
//同時進行,而上面的方式可以使得run和下面的程序同時執行
//一段在主線程中運行的代碼
for(int i = 0;i < 10;i++) {
System.out.println("main-->" + i);
}
//有了多線程之后,main方法結束只是主線程棧中沒有棧幀了
//但是其他線程或者其他棧中可能還有棧幀
//也就是說,main方法結束,程序可能還在運行
}
//定義一個線程
static class Processor extends Thread//注意這里要加一個static。因為靜態方法不能直接訪問非靜態成員。屬于內部類調用問題將內部類改為static,不能從上下文進行引用
{
//重寫run方法
public void run() {
for(int i = 0;i < 30;i++) {
System.out.println("run--" + i);
}
}
}
}
3.程序執行原理
程序執行原理
七.線程生命周期示意圖
線程的生命周期