如何實現執行緒的同步

2021-08-06 03:14:26 字數 1031 閱讀 8659

在上面的一節中我們看到了是執行緒不同的不問題,那麼對於這樣的執行緒不同步,我們是可以利用上鎖的方式來解決。同步表示的是執行緒不同時進入一段**或者是乙個方法,而是按照一定的順序進入乙個**塊。實現同步我們可以用同步**塊來解決,可以用不同方法來解決。

我們來看同步方法:

package com.epoint.wdgtest;

public class wdgtest }

class mythread implements runnable

}public synchronized void scale()

catch (interruptedexception e)

system.out.println(thread.currentthread().getname()+"獲取"+this.ticket--+"號");}}

}

最後的輸出結果如下:

為了讓執行緒的同步,我們可以對一些方法進行上鎖,上鎖也就類似於排隊上廁所,當有乙個人在廁所的時候,其他的執行緒只能在外面進行等待,因為前面的人已將在鎖上的廁所的門,等裡面的人出來,等著的執行緒才可以進入。上面的是通過對建立同步方法來實現同步,其實我們還可以利用同步**塊的方法來實現執行緒的同步:

package com.epoint.wdgtest;

public class wdgtest }

class mythread implements runnable

catch (interruptedexception e)

system.out.println(thread.currentthread().getname()+"獲取"+this.ticket--+"號");}}}}}

上面我們在方法的內部來對一段**進行上鎖來實現同步的功能,這個就是同步**塊。結果和同步方法輸出的結果是一樣的,也就是實現了我們想要的功能。

多執行緒如何實現同步

在多個執行緒併發執行訪問同乙個資料時,如果不採取相應的措施,將會是非常危險的。所謂同步 synchronization 就是指乙個執行緒訪問資料時,其它執行緒不得對同乙個資料進行訪問,即同一時刻只能有乙個執行緒訪問該資料,當這一線程訪問結束時其它執行緒才能對這它進行訪問。同步最常見的方式就是使用鎖 ...

執行緒條件控制實現執行緒的同步

與條件變數相關api 條件變數是執行緒另一可用的同步機制。條件變數給多個執行緒提供了乙個會合的場所。條件變數與互斥量一起使用時,允許執行緒以無競爭的方式等待特定的條件發生。條件本身是由互斥量保護的。執行緒在改變條件狀態前必須首先鎖住互斥量,其他執行緒在獲得互斥量之前不會察覺到這種改變,因為必須鎖定互...

多執行緒 同步的實現方法

多執行緒有兩種實現方法,分別是繼承thread類與實現runnable介面 同步的實現方面有兩種,分別是synchronized,wait與notify wait 使乙個執行緒處於等待狀態,並且釋放所持有的物件的lock。sleep 使乙個正在執行的執行緒處於睡眠狀態,是乙個靜態方法,呼叫此方法要捕...