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

📄 philosopher.java

📁 北大Java 语言程序设计 ppt课件及源码
💻 JAVA
字号:
import java.awt.*;public class Philosopher extends Thread {    private Chopstick leftStick, rightStick;    private double x, y;    private boolean sated;    private PhilosopherArea parent;    private int position;    private boolean stopRequested = false;    public Philosopher(PhilosopherArea parent,		       double x, double y, int position) {        super(parent.names[position]);        this.parent = parent;        this.position = position;        this.x = x;        this.y = y;        // identify the chopsticks to my right and left        this.rightStick = this.parent.chopsticks[position];        if (position == 0) {            this.leftStick = this.parent.chopsticks[this.parent.NUMPHILS-1];        } else {            this.leftStick = this.parent.chopsticks[position-1];        }        // I'm hungry        this.sated = false;    }    public void run() {        int grabDelay;        while (stopRequested == false) {             try {                grabDelay = parent.controller.grabDelaySlider.getValue() * 100;                sleep((int)(Math.random() * grabDelay));                rightStick.grab(this);                parent.repaintPhil(position);                grabDelay = parent.controller.grabDelaySlider.getValue() * 100;                sleep((int)(Math.random() * grabDelay));                leftStick.grab(this);                parent.repaintPhil(position);                grabDelay = parent.controller.grabDelaySlider.getValue() * 100;                sleep((int)(Math.random() * grabDelay));                eat();                grabDelay = parent.controller.grabDelaySlider.getValue() * 100;                sleep((int)(Math.random() * grabDelay * 4));                sated = false;                parent.repaintPhil(position);            } catch (java.lang.InterruptedException e) {            }        }    }    public void eat() {        rightStick.release(this);        leftStick.release(this);        sated = true;        parent.repaintPhil(position);    }    public void paint(Graphics g) {        g.setColor(Color.lightGray);        g.fillRect((int)x, (int)y, parent.imgs[0].getWidth(parent),		   parent.imgs[0].getHeight(parent)+25);        if (sated == false) {            if (rightStick.owner == this && leftStick.owner != this) {		// got left only                g.drawImage(parent.imgs[1], (int)x, (int)y, parent);            } else if (rightStick.owner == this && leftStick.owner == this) {		// got both                g.drawImage(parent.imgs[2], (int)x, (int)y, parent);            } else {		// got nothing                g.drawImage(parent.imgs[0], (int)x, (int)y, parent);            }        } else {            g.drawImage(parent.imgs[0], (int)x, (int)y, parent);            g.setColor(Color.black);            g.drawString("Mmm!", ((int)(x)+8),			 ((int)(y)+parent.imgs[0].getHeight(parent)+13));        }    }    public void stopRequested() {        stopRequested = true;    }}

⌨️ 快捷键说明

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