什麼是java線程
Java中線程是指java.lang.Thread類別的一個實例或線程的執行。使用java.lang.Thread或java.lang.Runnable介面編寫程式碼定義、實例化、啟動新執行緒。
1、進程
進程是指一個記憶體中運行的應用程序,每個進程都有自己獨立的一塊記憶體空間,一個行程中可以啟動多個執行緒。例如在Windows系統中,一個運行的exe就是一個進程。
2、執行緒
執行緒是指進程中的一個執行流程,一個行程可以執行多個執行緒。例如java.exe進程可以運行很多執行緒。執行緒總是輸入某個進程,進程中的多個執行緒共享進程的記憶體。
推薦教學:java教學
3、Java的執行緒模型
由於Java是純粹物件導向語言,因此,Java的執行緒模型也是物件導向的。 Java透過Thread類別將執行緒所必須的功能都封裝了起來。要建立一個線程,必須要有一個線程執行函數,這個線程執行函數對應Thread類別的run方法。 Thread類別還有一個start方法,這個方法負責建立線程,相當於呼叫Windows的建立線程函數CreateThread。當呼叫start方法後,如果執行緒建立成功,並自動呼叫Thread類別的run方法。因此,任何繼承Thread的Java類別都可以透過Thread類別的start方法來建立執行緒。如果想運行自己的執行緒執行函數,那就要覆寫Thread類別的run方法。
在Java的執行緒模型中除了Thread類,還有一個標識某個Java類別是否可作為執行緒類別的介面Runnable,這個介面只有一個抽象方法run,也就是Java執行緒模型的執行緒執行函數。因此,一個執行緒類別的唯一標準就是這個類別是否實作了Runnable介面的run方法,也就是說,擁有執行緒執行函數的類別就是線程類別。
從上面可以看出,在Java中建立執行緒有兩種方法,一種是繼承Thread類別,另一種是實作Runnable介面,並透過Thread和實作Runnable的類別來建立線程,其實這兩種方法本質上都是一種方法,就是透過Thread類別來建立線程,並運行run方法的。但它們的大區別是透過繼承Thread類別來建立線程,雖然在實現起來更容易,但由於Java不支援多繼承,因此,這個線程類別如果繼承了Thread,就不能再繼承其他的類別了,因此, Java線程模型提供了透過實作Runnable介面的方法來建立線程,這樣線程類別就可以在必要的時候繼承和業務有關的類,而不是Thread類別。
● Java編寫程式都運行在在Java虛擬機器(JVM)中,在JVM的內部,程式的多任務是透過執行緒來實現的。每用java指令啟動一個java應用程序,就會啟動一個JVM程序。在同一個JVM進程中,有且只有一個進程,就是它自己。在這個JVM環境中,所有程式碼的運行都是以執行緒來運行。
● 一般常見的Java應用程式都是單執行緒的。例如,用java指令執行一個最簡單的HelloWorld的Java應用程式時,就啟動了一個JVM進程,JVM找到程式程式的入口點main(),然後執行main()方法,這樣就產生了一個線程,這個線程稱之為主線程。當main方法結束後,主執行緒運行完成。 JVM進程也隨即退出 。
以上是什麼是java線程的詳細內容。更多資訊請關注PHP中文網其他相關文章!