guarded block(保護塊)

假設a和b線程共同操作一個變量,一個線程無限循環判斷這個變量的狀態,當這個變量狀態不符合條件時跳出循環,這樣這個線程是持續佔用資源的,那麼將將程序改爲循環體是一個繼承自Object的wait方法,這樣該線程就不會佔用資源,且wait方法會放棄對象鎖,爲了保證變量的內存一致性,將方法改爲同步,方法判斷時別的線程不會操作該變量,wait()時,交出對象鎖,別的線程操作該變量,等待別的線程喚醒該線程;

生產者消費者經典案例(producer-consumer),生產者和消費者共享一個對象,生產者放東西時,要保證消費者已經把東西消費了;消費者消費時,要保證生產者已經把東西生產了。

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