標籤:
一:線程的建立
1:編寫一個繼承Thread類的類,然後在後面重寫Thread類的run()方法。
步驟
a 建立一個繼承Thread的類
b在建立的Thread子類中重寫run()方法
c 建立Thread子類的執行個體
d通過調用該執行個體上的run()方法
2:編寫一個類實現Runable介面
a 建立一個實現Runable介面
b在IanyRunable實現介面的類中實現run()方法
c建立一個Runable類的執行個體
d建立一個Thread類,講Runable的執行個體作為構造器參數傳進去
e通過調用Thread類的執行個體start()方法
二:線程的生命週期
生命週期有幾個狀態
新狀態:線程對象已經建立,還沒有在其上調用start()方法。
可運行狀態:當線程有資格運行,但發送器還沒有把它選定為運行線程時線程所處的狀態。當start()方法調用時,線程首先進入可運行狀態。線上程運行之後或者從阻塞、等待或睡眠狀態回來後,也返回到可運行狀態。
運行狀態:線程發送器從可運行池中選擇一個線程作為當前線程時線程所處的狀態。這也是線程進入運行狀態的唯一一種方式。
等待/阻塞/睡眠狀態:這是線程有資格運行時它所處的狀態。實際上這個三狀態組合為一種,其共同點是:線程仍舊是活的,但是當前沒有條件運行。換句話說,它是可啟動並執行,但是如果某件事件出現,他可能返回到可運行狀態。
死亡態:當線程的run()方法完成時就認為它死去。這個線程對象也許是活的,但是,它已經不是一個單獨執行的線程。線程一旦死亡,就不能複生。 如果在一個死去的線程上調用start()方法,會拋出java.lang.IllegalThreadStateException異常。
線程睡眠 sleep(): 執行該方法可是當前的線程停止運行若干毫秒,線程由運行狀態進入不可運行狀態,睡眠時間過後繼續進入可運行狀態。
三:解決線程同步的問題
1 使用同步塊 synchronized(取的鎖的對象){
}
2 使用synchronized的方法。
四:線程之間通過wait(),notify(),notifyAll()方法通訊。
java 多線程編程