package concurrency.diners; import java.awt.*; import java.applet.*; public class Diners extends Applet { PhilCanvas display; Thread[] phil= new Thread[PhilCanvas.NUMPHILS]; Fork[] fork = new Fork[PhilCanvas.NUMPHILS]; Scrollbar slider; Button restart; Button freeze; boolean fixed = false; public void init() { setLayout(new BorderLayout()); String s = getParameter("Version"); fixed = s.equals("FIXED"); display = new PhilCanvas(this); display.setSize(300,320); add("Center",display); slider = new Scrollbar(Scrollbar.HORIZONTAL, 50, 5, 0, 100); restart = new Button("Restart"); freeze = new Button("Freeze"); Panel p1 = new Panel(); p1.setLayout(new BorderLayout()); p1.add("Center",slider); p1.add("East",restart); p1.add("West",freeze); add("South",p1); } Thread makePhilosopher(Diners d, int id, Fork left, Fork right) { if (fixed) return new FixedPhilosopher(d,id,left,right); else return new Philosopher(d,id,left,right); } public int sleepTime() { return (slider.getValue()*(int)(100*Math.random())); } public int eatTime() { return (slider.getValue()*(int)(50*Math.random())); } public void start() { for (int i =0; i