##實現多線程的方式:安全
繼承Thread類 實現Runnable接口多線程
執行start()方法的順序不表明線程啓動的順序函數
**構造函數Thread(Runnable target)不光能夠傳入Runnable接口的對象,還能夠傳入一個Thread類的對象,這樣作徹底能夠將一個Threa對象中的run()方法交由其餘線程進行調用 ** ##在某些JVM中,i--的操做要分紅以下3步:工具
##currentThread():返回代碼段正在被那個線程調用的信息 測試
###currentThread()和 this的差別this
isAlive():判斷當前線程是否處於活動狀態(線程已經啓動且還沒有終止:正在運行或準備運行狀態)線程
sleep():在指定的毫秒內讓當前「正在執行的線程(this.currentThread())」休眠(暫停執行)code
##中止線程對象
**Thread.interrupt():不會終止一個正在運行的現場,還須要加入一個判斷才能夠完成線程的中止 僅僅實在當前線程打了一箇中止的標誌 **繼承
Thread.stop():不安全,棄用的方法 ###中止線程的方法:
退出標誌:return+isInterrupter()+ interrupt()
stop()方法
interrupt()方法
異常法:catch塊中能夠對異常的信息進行相關的處理並且使用異常流能更好、更方便的控制程序的運行流程,不至於代碼中出現不少個return,形成污染
sleep+interrupt(): 若是在sleep狀態下中止某一線程,會進入catch語句,而且清除中止狀態值使之變成false;若是先interrupt()再sleep會拋出sleep interrupted異常
暴力中止stop:stop()方法會拋出ThreadDeath異常(此異常不須要顯示的捕捉) 若是強制讓線程中止則有可能使一些請理性的工具得不到完成,另一種狀況就對因此的對象進行了「解鎖」,致使數據得不到同步的處理,出現數據不一致的問題。
this.interrupted()靜態方法:測試當前線程(運行此方法線程,就是此段代碼運行的線程,不是指調用對象的線程)是否已經中斷,線程中斷狀態由該方法清除(置爲false)
this.isInterrupter():測試線程Thread對象是否已經中斷
##暫停線程 suspend():暫停線程
resume():回覆線程
suspend與resume缺點 獨佔:若是使用不當,極易形成公共的同步對象的獨佔,是其餘線程沒法訪問公共同步對象(println) 不一樣步:
###yield 放棄當前的CPU資源,將它讓給其餘的任務去佔用CPU執行時間
###優先級 優先級具備繼承特性 設置線程優先級不能超過所屬線程組的優先級 優先級具備規則性、隨機性:高優先級的線程「老是大部分」先執行完
###守護線程 GC是典型的守護線程