Java學習25 2020-03-10

內容

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.程序執行原理

程序執行原理

七.線程生命周期示意圖

線程的生命周期
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 除了充分利用計算機處理器的能力外,一個服務端同時對多個客戶端提供服務則是另一個更具體的并發應用場景。衡量一個服務性...
    胡二囧閱讀 1,381評論 0 12
  • Java SE 基礎: 封裝、繼承、多態 封裝: 概念:就是把對象的屬性和操作(或服務)結合為一個獨立的整體,并盡...
    Jayden_Cao閱讀 2,134評論 0 8
  • Java內存區域 Java虛擬機在運行程序時會把其自動管理的內存劃分為以上幾個區域,每個區域都有的用途以及創建銷毀...
    架構師springboot閱讀 1,795評論 0 5
  • 一些常用的第三方數據平臺整理: 艾瑞網:https://www.iresearch.cn/互聯網數據資訊聚合平臺 ...
    塵土txy閱讀 537評論 0 1
  • 看起來好像不難,不過畫了好長時間,距離上次畫畫又是好久了
    蹣跚學步_閱讀 244評論 0 0