線程和進程

今天看了幾個關於線程和進程的視頻,不是很理解,這裏作一下重點知識的整理,方便後續複習和理解java

1.簡單的概念理解:程序員

1)進程:一個執行中的程序,每個進程執行都有一個執行順序,該順序是一個執行路徑,或者叫一個控制單元;多線程

2)線程:進程中一個獨立的控制單元,線程在控制着進程的執行,一個進程中至少要有一個線程(書上的概念:是進程的一個實體,是被獨立調度和分配的基本單位);併發

2.多線程的實現:函數

在java中對於多線程實現必定要有一個線程主類,這個線程主類的要求是:學習

1)繼承Thread父類;操作系統

2)實現Runnable接口;線程

3.繼承Thread類實現多線程(在java.lang包裏面的Thread類):視頻

1)步驟(全部的線程都是交替執行,自己沒有固定的執行順序):繼承

>>定義類繼承Thread;

>>複寫Thread類中的run方法;

>>調用線程中的start()方法(該方法的兩個做用:啓動線程,調用run方法);

註解:爲什麼要調用start()方法而不能夠直接調用run()方法,由於全部的多線程的執行必定是併發的,在同一個時間段上會有多個線程交替執行,因此爲了達到目的,絕對不可以直接調用run()方法,而是應該調用Thread類中的start()方法啓動多線程;

註解:在調用start()方法裏面發現有調用start0()方法,而start0()方法使用了native關鍵字定義,這個關鍵字調用本機的操做系統函數,因爲線程的啓動須要牽扯到操做系統中資源的分配,因此具體的線程啓動須要根據不一樣的操做系統的實現,而JVM至關於根據系統中定義的start0()方法來根據不一樣的操做系統進行該方法的實現。(有點繞,很差理解)

4.實現Runnable接口:

是函數式的接口(@FunctionalInterface),能夠利用Lamda表達式完成。(不知道是什麼鬼?)

Thread類的構造方法:public Thread(Runnable target),因此能夠根據new Thread(mt1).start() 來調用start()函數,從而啓動多線程。

學習視頻:黑馬程序員_畢向東_Java基礎視頻教程;極限程序員java入門到精通;java學習寶典(書籍)

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息