鎖與Runnable建立執行緒

2021-10-08 15:34:19 字數 743 閱讀 3683

/**

* 版本:v1.0

* */

public

class

study_11_7

}class

ticket

implements

runnable

//extends thread

catch

(exception e)

system.out.

println

(thread.

currentthread()

.getname()

+"sale:"

+ tick--);

}//多個執行緒處理共享資料才需要上鎖

else}}

}}/** 通過分析發現列印出了0,-1等錯票

* 多執行緒的執行出現了安全問題

* 問題的原因:

* 當多條語句在操作同乙個執行緒共享資料時,乙個執行緒對多條語句只執行了一部分,還沒有執行完

* 另乙個執行緒參與進來執行,導致共享資料的錯誤。

* 解決辦法,對多條操作共享資料的語句,只能讓乙個執行緒都執行完,其他執行緒此時不可以執行

** 同步**塊:

* synchronized(物件)

* * */

/** synchronized好處:安全

* synchronized壞處:慢,消耗資源,多個執行緒都需要判斷鎖

* */

使用Runnable介面建立執行緒

實現 runnable 介面的類必須使用 thread 類的例項才能建立執行緒。通過 runnable 介面建立執行緒分為兩步 1.將實現runnable介面的類例項化。2.建立乙個thread物件,並將第一步例項化後的物件作為引數傳入thread類的構造方法。最後通過thread類的start方法...

多執行緒 建立執行緒 實現Runnable介面

class twindow implements runnable class ticket 該 執行後,沒有結果。因為雖然四個執行緒已經開始執行,但是它們呼叫的是thread類中的run 而該run 並沒有任何內容。問題來了,twindow中的run 方法為賣票動作,要如何呼叫它呢。需求 簡單的買...

通過實現Runnable介面建立執行緒

實現runnable介面來建立執行緒類 建立runnable實現類的物件 以runnable實現類的物件作為thread的目標target來建立thread物件 package newthread public class twothread implements runnable public s...