畢向東筆記摘抄之多線程

/*
進程:是一個正在執行的程序。
        每一個進程都有一個執行順序。該順序是一個執行路徑,或者叫一個控制單元。

線程:就是進程中的一個獨立的控制單元。
        線程在控制着進程的進行。

一個進程中至少有一個線程。



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方法呢?


*/
public class aaa{
    /**
        主程序
    */
    public static void main(String[] args){
        Demo d = new Demo();
        //d.start();//開啓線程並執行該線程的run方法。
        d.run();//僅僅是對象調用方法。而線程創建了,並沒有運行。
        for(int i=0;i<10;i++)
            System.out.println("hello world----"+i);

    }
}   
class Demo extends Thread{
    public void run(){
        for(int i=0;i<10;i++)
            System.out.println("demo run----"+i);
    }
}

筆記截屏:
這裏寫圖片描述

調用run方法和start方法的區別:
start() //開啓線程並執行該線程的run方法。
run() //僅僅是對象調用方法。而線程創建了,並沒有運行。

start方法執行效果圖截屏
這裏寫圖片描述

run方法執行效果圖截屏
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章