1)currentThread(): public static Thread currentThread() 說明:返回當前正在執行的線程對象的引用,即返回調用當前代碼的線程對象。測試
2) join(): public final void join(long millis) throws InterruptedException 參數:等待的時間,可選,不填則默認爲0。 說明: 1>強制運行調用join方法的線程,在該線程啓動後的millis毫秒內,其它線程沒法運行。 2>若是millis的值爲0,則表示在該線程運行期間,其它線程沒法運行,必須等到該線程結束後其它線程才能夠運行。 3>join(long)方法是在內部調用wait(long)方法來實現的等待效果。 3)setDaemon(): public final void setDaemon(boolean on) 說明:將該線程標記爲後臺線程,該方法必須在啓動線程(start()方法)前調用,不然報IllegalThreadStateException異常。 補充: 後臺線程:處於後臺運行,任務是爲其餘線程提供服務。也稱爲「守護線程」或「精靈線程」。JVM的垃圾回收就是典型的後臺線程。 特色: 1>若全部的前臺線程都死亡,後臺線程自動死亡。 2>前臺線程建立的線程默認是前臺線程。 isDaemon(): public final boolean isDaemon() 說明:判斷是否爲後臺線程: 4)sleep(): public static void sleep(long millis) throws InterruptedException 說明:讓當前正在執行的線程休眠(暫停)指定的毫秒數,進入阻塞狀態 比較:Thread.sleep()與Object.wait()兩者均可以暫停當前線程,釋放CPU控制權,主要的區別在於Object.wait()在釋放CPU同時,釋放了持有的對象鎖。 5)yield(): public static void yield() 說明:暫停當前正在執行的線程對象,並執行其餘線程,即線程禮讓。 注意:暫停當前線程,但不會阻塞該線程,而是讓其進入就緒狀態。故徹底有可能:某個線程調用了yield()以後,線程調度器又把他調度出來從新執行。 6)interrupt(): 說明: 1)每一個線程都有一個boolean類型的中斷標誌,當一個線程調用interrupt()方法時,線程的中斷標誌將被設爲true,此時線程處於中斷狀態。 2)調用線程的interrupt()方法只是將線程的中斷標記設爲了true,並不會中斷一個正在運行的線程。 3)若是在程序中沒有去檢測線程的中斷標誌,那麼即便將線程的中斷標誌設爲true,線程也同樣照常運行。 應用: 1)當線程調用Thread.sleep()、Thread.join()、object.wait()等方法,都會使當前線程進入到阻塞狀態。 2)若是此時(線程處於阻塞狀態)調用interrupt()方法將線程中斷,則處於阻塞狀態的線程會拋出一個異常,而且將線程的中斷狀態清除掉,這樣就可讓線程退出阻塞狀態了。 3)Thread.sleep()、Thread.join()、object.wait()等方法的實現中,都包含了對線程中斷標識的檢測:若是發現中斷標誌爲true則拋出異常而且將中斷標誌位設置爲false。 isInterrupted(): public boolean isInterrupted() 說明:測試線程是否已經中斷,不清除線程的中斷狀態。 eg:thread.isInterrupted(); 判斷thread指向的線程對象是否爲中斷狀態。 interrupted(): public static boolean interrupted() 說明:測試當前線程是否已經中斷,並,即將線程的中斷標識設爲false。 eg:thread.interrupted(); 判斷調用thread.interrupted();語句的線程(即當前線程)是否爲中斷狀態。 7)stop(): [@Deprecated](https://my.oschina.net/jianhuaw) public final void stop() 說明:終止線程,立刻讓線程中止運行,並釋放該線程所持有的鎖!致使數據得不到同步的處理,可能出現數據不一致的問題。 補充:其它中止線程的方法; 1>手動拋出異常來中止線程(推薦): 優勢:在catch塊中能夠將捕獲的異常向上拋出,使得線程中止的事件能夠向上傳播。 2>使用return中止線程: 使用interrupt()方法與return結合起來,實現中止線程的功能。 eg:在run方法中:if (this.isInterrupt()) {return;} 8)suspend(): [@Deprecated](https://my.oschina.net/jianhuaw) public final void suspend() 說明: 1>掛起線程,使線程進入「阻塞」狀態,在調用resume()方法前該線程一直處於阻塞狀態。 2>獨佔公共的同步對象,使得其它線程沒法訪問公共的同步對象。 3>該方法容易發生死鎖:調用suspend()的時候,目標線程會停下來,但卻仍然持有在這以前得到的鎖。若是其它線程想經過resume()方法來恢復目標線程,同時必須使用目標線程鎖定的資源,就會形成死鎖。 舉例:當一個線程的run()方法中的程序執行並進入到一個synchronized方法的內部時,若是此時該線程調用suspend()方法被掛起了,那麼直到調用resume()方法被喚醒以前,這個synchronized方法將一直處於「暫停」狀態,而且「鎖未被釋放」,其它線程就不能調用這個方法了。 9)resume(): [@Deprecated](https://my.oschina.net/jianhuaw) public final void resume() 說明:恢復線程,恢復被suspend方法掛起的線程 注意:suspend()與resume()容易致使死鎖,故應該使用鎖對象調用wait()和notify()的機制來代替suspend()和resume()來控制線程。 10)getName()/setName(): 說明:獲取/設置線程的名稱 注意:第一個子線程默認的名字:Thread-0