⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fork.java

📁 升级版本
💻 JAVA
字号:
import org.jcsp.lang.Alternative;import org.jcsp.lang.AltingChannelInput;import org.jcsp.lang.CSProcess;import org.jcsp.lang.ChannelOutput;import org.jcsp.lang.Guard;class Fork implements CSProcess {  // protected attributes  protected int id;  protected Integer Id;  protected AltingChannelInput left, right;  protected ChannelOutput report;  protected ForkReport leftUp, leftDown, rightUp, rightDown;  // constructors  public Fork (int nPhilosophers, int id,               AltingChannelInput left, AltingChannelInput right,               ChannelOutput report) {    this.id = id;    Id = new Integer(id);    this.left = left;    this.right = right;    this.report = report;    leftUp = new ForkReport (id, id, ForkReport.UP);    leftDown = new ForkReport (id, id, ForkReport.DOWN);    rightUp = new ForkReport ((id + 1) % nPhilosophers, id, ForkReport.UP);    rightDown = new ForkReport ((id + 1) % nPhilosophers, id, ForkReport.DOWN);  }  // public methods  public void run () {    Alternative alt = new Alternative (new Guard[] {left, right});    final int LEFT = 0;    final int RIGHT = 1;    int philId;    while (true) {      switch (alt.fairSelect ()) {        case LEFT:          philId = ((Integer) left.read ()).intValue();          report.write (leftUp);          philId = ((Integer) left.read ()).intValue();          report.write (leftDown);        break;        case RIGHT:          philId = ((Integer) right.read ()).intValue();          report.write (rightUp);          philId = ((Integer) right.read ()).intValue();          report.write (rightDown);        break;      }    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -