有这样一个工厂,工厂中有5个工作站,A,B,C,D,E.
关系如图:
每个工作站上都要处理三个产品P1,P2,P3。
现有三个员工W1,W2,W3。W1和W2负责处理产品P1,P2,W3负责处理P3
W1在A上处理P1,然后随机选择了去C上继续处理P1,
此时W3想在A上处理P3,但是工作站还没有处理过P2,所以W3只能在A处等待直至A中的P2被处理了才可以处理P3
W2想在A处理P1,发现此处的P1已经被处理了,所以他去B中处理P1(工作站B与C之间不相关,所以可以同时处理P1),然后去下一工作站D处理P1
W1从C处处理完了之后来到了B,发现B处理完了P1,继而来到D,D正在工作,所以他等D执行完。
W2在D处执行完来到了C处,发现P1已经被处理过了,进而来到了E。
W1被唤醒之后发现D,E中的P1都已经处理完了。
而此时W2毫无阻碍的在ABCDE上处理完了P2,
W3被唤醒开始在ABCDE上处理P3
W1发现P2都被处理完了,结束工作。各位大神 这个过程怎么使用多线程实现??
关系如图:
每个工作站上都要处理三个产品P1,P2,P3。
现有三个员工W1,W2,W3。W1和W2负责处理产品P1,P2,W3负责处理P3
W1在A上处理P1,然后随机选择了去C上继续处理P1,
此时W3想在A上处理P3,但是工作站还没有处理过P2,所以W3只能在A处等待直至A中的P2被处理了才可以处理P3
W2想在A处理P1,发现此处的P1已经被处理了,所以他去B中处理P1(工作站B与C之间不相关,所以可以同时处理P1),然后去下一工作站D处理P1
W1从C处处理完了之后来到了B,发现B处理完了P1,继而来到D,D正在工作,所以他等D执行完。
W2在D处执行完来到了C处,发现P1已经被处理过了,进而来到了E。
W1被唤醒之后发现D,E中的P1都已经处理完了。
而此时W2毫无阻碍的在ABCDE上处理完了P2,
W3被唤醒开始在ABCDE上处理P3
W1发现P2都被处理完了,结束工作。各位大神 这个过程怎么使用多线程实现??
A,B负责P1
C,D负责p2
E 负责P3
private boolean p1, p2, p3;
private boolean working; public StationA() {
p1 = p2 = p3 = working = false;
} public void workOnP1() {
if(p1)
return;
if(working) {
try {
wait();
} catch (InterrupedException e) {
}
}
working = true;
p1 = true;
working = false;
}
……………………
}类似这样了。你可以看看,我也是刚刚开始学习java。
题目就是要求3个不同的进程 W1 2 3 处理事务 但是事务是按照一定的顺序走的 每个点都必须完成, 然后按照P123 顺序, 然后按箭头 每个前面的PN 完成才能完成后个的PN, 题目是这个意思么。。