以下挑戰白話文解說
我固定請了5個員工,然後分配5個員工去從生產,而工廠的生產前,
必須有人去打開電源,才能使機械運作,才能開始生產。
若有1個員工要從事生產時,若發現電源沒開的話,
就會請下一個員工,也就是第2名員工,去打開電源開關。
當我工廠要一口氣生產4個產品的時候,就會一口氣有4個人衝向機台,
等待開工,這時第5個人就會去打開電源開關。
很不幸的事,我一口氣要生產5個產品的時候,就有5個人衝向機台,
但是沒有人去打開電源,因為我一開始就說了,我只請5個員工 Orz
然後整個工廠就停工了 ...
◢▆▅▄▃崩╰(〒皿〒)╯潰▃▄▅▇◣
Thread 有辦法限制說不會進行 wait嗎?
或者變成 non-blocking 的形式有可能嗎?
或者該怎麼避免此問題的發生呢?
從描述可以看的出來勤儉持家的我是用
Executors.newFixedThreadPool
而不是用有錢人專用的 ( 大誤 )
Executors.newCachedThreadPool
小弟我想請教 大大們都怎樣解決這問題? Q"Q
作者:
kingofsdtw (ä¸èƒ½é–’下來!!)
2014-05-21 20:05:00作者:
kingofsdtw (ä¸èƒ½é–’下來!!)
2014-05-21 20:07:00關鍵字setDelayTime
xd 簡單的方式特地專用的Thread來處理,或者狂開Thread
作者:
luoqr (.....)
2014-05-21 21:38:00發現沒開開關就去開啊~管他是誰?
作者:
bitlife (BIT一生)
2014-05-21 21:38:00這從程式邏輯下手就好吧? 每個員工在衝向機台前,先檢查電
作者:
bitlife (BIT一生)
2014-05-21 21:39:00源開否,若未開則進入critical section 開電源應該就OK了
作者:
bitlife (BIT一生)
2014-05-21 21:41:00如果電只能開一次,那就進臨界區間後再檢查一次是否己開
為什麼不能做成 當員工進入產線後 產線自動期動呢?
作者:
qrtt1 (有些事,有時候。。。)
2014-05-22 08:03:00為什麼 setDelayTime 能解決問題!?
作者:
kingofsdtw (ä¸èƒ½é–’下來!!)
2014-05-22 08:25:005張訂單去塞爆一條A級產線,A級產線必須5倍速度@_@
作者:
popcorny (畢業了..@@")
2014-05-22 09:11:00我只是想說 "為什麼發現沒開要請下個員工開?"
作者:
PsMonkey (痞子軍團團長)
2014-05-22 10:17:00我始終覺得 kingofsdtw 的各種思維都很微妙(又在酸人了btw.. 我覺得原 po 的白話文解說很棒 \囧/
作者:
andymai (人生只有一次)
2014-05-22 13:04:00"為何沒開要請下個人開?"+1 限制5個又動5個~真的不奇怪嗎?
作者: bestlong (bestlong) 2014-05-22 17:32:00
若強調職責區分就應該要一個工人專門開電
看起來可以用 listener 的方式 (隨便誰開完電跟別人說)
作者: bestlong (bestlong) 2014-05-22 17:37:00
五個工人都上工後,也沒工人去拿復工計畫書吧
作者: bestlong (bestlong) 2014-05-22 18:05:00
既然工人都先上工,那就由老闆負責開電吧