慕碼人8056858
2021-07-23 16:05:07
如何在 Java 中等待多個(gè)阻塞隊(duì)列?例如,如果有一位顧客想要進(jìn)入等候室。有3個(gè)候機(jī)室,每個(gè)休息室都有固定數(shù)量的座位??紤]到這是一個(gè)并發(fā)編程問(wèn)題,客戶如何同時(shí)等待所有這些。 terminal.waitingArea1.enterWaitingArea(this);
terminal.waitingArea2.enterWaitingArea(this);
terminal.waitingArea3.enterWaitingArea(this);如果我進(jìn)入一個(gè)區(qū)域,我應(yīng)該放棄等待其他區(qū)域。如何才能做到這一點(diǎn)?
2 回答

BIG陽(yáng)
TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
基本邏輯是:
使用布爾變量(即 a
flag
),最初設(shè)置為false
。當(dāng)物體進(jìn)入等候區(qū)時(shí),檢查標(biāo)志。
如果標(biāo)志為
false
,則將其設(shè)置為 true,然后執(zhí)行所需的操作。如果標(biāo)志是
true
,只需從隊(duì)列中刪除對(duì)象,不做任何事情。
如果您使用多個(gè)線程,請(qǐng)synchronized
在對(duì)象上使用。

qq_遁去的一_1
TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊
保持引用隊(duì)列中Customer
那this
Customer
等待。什么時(shí)候
進(jìn)入一個(gè)區(qū)域
this
Customer
從this
除此隊(duì)列之外的所有等待隊(duì)列中刪除,remove
操作應(yīng)該是synchronized
。
添加回答
舉報(bào)
0/150
提交
取消