以下挑战白话文解说
我固定请了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
既然工人都先上工,那就由老板负责开电吧