java中線程的同步的乙個賣票的小案例

2021-06-07 23:03:25 字數 686 閱讀 2508

public class lesson5testdemo1

}//這是賣票

class lesson5testdemo2 implements runnable

{private int tickets = 100;

//private string str = new string("");

public void run()

{while(true)

{//synchronized必須要鎖定乙個物件,注意是物件,基本型別的資料是不行的,至於鎖定什麼物件,隨便你

/**synchronized的工作原理:當我們有乙個執行緒執行到這個synchronized鎖定的**塊裡面的時候,

* 這時候就會設定乙個標誌,(其實這個標誌就是加上鎖),當加鎖上以後,那麼只有等待這個執行緒執行

*完,執行完後就會釋放這個鎖,讓其他的執行緒來執行**

*///但是一旦加上同步鎖定器,我們的程式會慢些,因為我們需要隨時來監聽這個物件是否加上鎖,這是需要消耗

//效能,也就是以效能換取安全性,如果我們的資料沒有涉及到安全的問題,不要輕易使用synchronized

//string str = new string("");//千萬不要把這個鎖定的物件放到run方法裡面,因為一旦放到run方法裡面

//建立的四個執行緒,其實每次鎖定的物件都不是同乙個物件,那麼依然會出現問題

java中線程的同步性

目的 測試同步 塊和同步函式鎖定同乙個物件才能實現執行緒安全 其實我們能夠實現執行緒同步其實就是因為我們在執行到某乙個執行緒的時候,設定了乙個標誌 也就是我們鎖定了乙個物件,要實現執行緒的同步,我們每次鎖定的物件必須要是同乙個 class lesson5testdemo1 catch excepti...

執行緒同步與非同步乙個視窗賣票例項

文章裡借鑑了 這篇文章裡的內容 1 執行緒繼承thred類,並重寫,然後出現非同步的情況。public class threadtest extends thread 為了保持數量的一直,票數設定為靜態 static int tick 20 重寫run方法,實現買票操作 override publi...

Java中線程同步的簡單用法

應用場景 應用程式需要新建若干執行緒進行事務處理,這些執行緒處理完畢後,應用程式會進行一些後續的操作。解決辦法 使用object.wait object.notify 方法。object.wait 方法會阻斷當前執行緒的執行,直到其他執行緒呼叫object.notify 於是可以很快的寫出乙個示例程...