線程 臨界區 Applet的生命週期

對象鎖

對象鎖在如下幾種情況由持有線程返還

1.        當synchronized()語句執行完後

2.        當synchronized()出現異常後

3.        當持有鎖的線程調用該對象的wait()方法。此時該線程將釋放對象鎖,而進入對象的wait pool中,等待

suspend()方法是基本的線程控制方法,在一個線程中調用t.suspend(),將使t暫停執行,要想恢復線程,必須由其他線程調用t.resume()恢復t的執行。


線程的生命週期 

線程的生命週期主要分爲:新建狀態,可運行狀態,運行狀態,阻塞狀態,終止狀態

會改變線程生命週期中狀態的方法有:

1.      yield()(暫停當前線程,從而允許與它具有相同優先級的線程運行)

2.      當線程需要在synchronized塊中等待共享數據狀態改變時,調用wait()方法,這樣該線程等待並且暫時釋放對象鎖,讓其他線程獲得對象鎖,並且放入wait pool中,轉入阻塞狀態,當其他線程操作完畢後,使用notify()方法就可以讓線程重新佔有鎖,並運行。

3.      Sleep()方法是讓當前線程處於休眠狀態

 

 

線程的創建

創建線程的方法有2種,一是通過創建Thread類的子類實現,二是通過實現Runnable接口的類實現。方法一創建線程要先設計Thread的子類,讓後重寫線程中的run方法,再用start方法啓動線程。

 

 

線程的結束

 

當線程完成運行後,除了線程的正常運行結束外,也可以用stop()方法強行終止線程,但不提倡,用stop方法容易造成線程的不一致,可以使用標準flag,通過設置flag通知一個線程應該結束

 

 

併發控制,臨界區

Java中對於共享數據操作的併發控制是採用封鎖技術,一個程序中單獨的,併發的線程對同一個對象進行訪問的代碼段,成爲臨界區,臨界區可以是一個語句塊或者是一個方法,並且用synchronized關鍵字標識。

 

Java的源文件名與程序名必須相同,其拓展名爲.java

 

 Applet的生命週期

Applet生命週期相關的方法有4種

1.      Init() 加載Applet時完成初始工作,

2.      start()啓動Applet的執行;

3.      stop()停止Applet的執行;

4.      destory()完成撤銷清理工作,準備卸載

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章