java基础之线程(1)
線程 是程序中的執行線程。Java 虛擬機允許應用程序并發地運行多個執行線程。
每個線程都有一個優先級,高優先級線程的執行優先于低優先級線程。每個線程都可以或不可以標記為一個守護程序。當某個線程中運行的代碼創建一個新 Thread 對象時,該新線程的初始優先級被設定為創建線程的優先級,并且當且僅當創建線程是守護線程時,新線程才是守護程序。
當 Java 虛擬機啟動時,通常都會有單個非守護線程(它通常會調用某個指定類的 main 方法)。Java 虛擬機會繼續執行線程,直到下列任一情況出現時為止:
- 調用了 Runtime 類的 exit 方法,并且安全管理器允許退出操作發生。
- 非守護線程的所有線程都已停止運行,無論是通過從對 run 方法的調用中返回,還是通過拋出一個傳播到 run 方法之外的異常。
創建新執行線程有兩種方法。一種方法是將類聲明為 Thread 的子類。該子類應重寫 Thread 類的 run 方法。接下來可以分配并啟動該子類的實例。例如,計算大于某一規定值的質數的線程可以寫成:
?
由于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類。
轉載于:https://www.cnblogs.com/verkey/archive/2012/11/03/thread.html
總結
以上是生活随笔為你收集整理的java基础之线程(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 缘 一篇文章 里面有很多喜欢的句子,日后
- 下一篇: tuxedo客户端调用java_tuxe