0
假設對象中的字段從null更改爲非null和來回等,具體取決於的操作線程。如果非空則使用值,否則等待並以原子方式獲取它,循環重複
第二個線程應該在發生非空值時才懶惰地採取一些行動。特別是第二個線程應該等到值切換爲非空值。如果它不在等待中,我想確定它的手中有一個非空值。
這看起來並不像隊列情況,因爲第二個線程不會將該元素帶走,只是在恰好可用時才使用它。
它也不適合信號量使用,因爲它再次不會允許.acquire()
許可證。
相反,它提醒了內置的等待和比較,但這似乎並不存在。
在java.util.concurrent
中是否有預定義的設備,我想要識別。如何才能做到這一點?
This是類似的,但沒有一個接受的答案或一個會幫助這裏。
你的方法有一個根本的缺陷 - 你不能保證懶惰的線程會在字段變化之間醒來,所以它可能不會捕獲所有的事件。 – Malt
這不是一個根本的缺陷,而是有意的行爲。這就是爲什麼我寫道:「如果它**發生**獲得一個空值」。如果沒有,這並不重要。 – Harald
多個線程是否會設置值? – erickson