import desmoj.core.simulator.*;public class Customer extends SimProcess { public Customer(Model owner, String name, boolean showInTrace) { super(owner, name, showInTrace); } public void lifeCycle() { // get reference to model SimulationModel model = (SimulationModel)getModel(); double p; while (true) { // Do until end of simulation model.cpu.provide(1); hold(new SimTime(model.getCPUServiceTime())); model.cpu.takeBack(1); p = model.getRoutingProb(); // Routing probabilities in model: {0.1 0.8 0.1} if (p < 0.1) { // p=[0, 0.1> No more service required for this job, "leaving" system model.infiniteServer.provide(1); hold(new SimTime(0.000000000001)); model.infiniteServer.takeBack(1); } else if (p < 0.9) { // p=[0.1, 1> Require service at DISK1 model.disk1.provide(1); hold(new SimTime(model.getDisk1ServiceTime())); model.disk1.takeBack(1); } else { // p=[1, 1.1] Require service at DISK2 model.disk2.provide(1); hold(new SimTime(model.getDisk2ServiceTime())); model.disk2.takeBack(1); } } }}