资源简介

实验一 进程同步互斥——不死锁的哲学家问题   (1)输入的形式和输入值的范围;   由于这个是一个按钮实现监控,界面提供视图的程序,所以并不需要别的附加的输入,只需要点击相应的按钮即可。按钮有开始、暂停、结束(退出)。实验只需要按动开始键,即可以直观形象地看到哲学家吃面条问题在随机时间下的解决情况,方便用户查看。   输出的形式;   输出的形式,是以可视化界面的形式,哲学家和筷子的状态以图片的形式显示出来,可以看到是饥饿还是进餐或思考状态。而提示输出是以String的形式显示在界面右下角的位置的。方便用户更客观的查看进程的运行情况。   程序所能达到的功能;   该程序能解决经典的哲学家吃面条问题的问题,即死锁问题。在此题中,筷子是一个共享的但是要互斥使用的临界资源 ,当前筷子是否被占用,其他哲学家的状态,都是需要进行交互的,于是涉及同步互斥的问题。该程序能解决死锁问题及将哲学家的状态用可视化的界面显示出来,所以比较客观的让我们理解了这个问题的实现。

资源截图

代码片段和文件信息

/*
 * 哲学家进餐不死锁问题
 */
package philosopher;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.io.*;
import java.text.*;
import java.awt.Graphics2D;
import java.awt.BasicStroke;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author 蔡曼佳
 */
public class Philosopher extends Jframe implements ActionListener {

    private JButton Class1 = new JButton(“开始“);
    private JButton Class2 = new JButton(“暂停“);

    private JButton Class3 = new JButton(“结束“);
    private JPanel p;
    private JPanel p1 = new JPanel();
    private JPanel p2 = new JPanel();
    private JPanel p3;
    private JPanel p4;
    private JPanel p5;
    private JPanel p20;
    private JPanel p21;
    private JPanel p22;
    private JPanel p23;
    private JPanel p24;
    private JPanel p25;
    private int[] l = new int[5];
    private int[] fork = new int[5];
    MyThread s;
    private boolean flag = true;

    public Philosopher() {
        for (int i = 0; i < 5; i++) {
            l[i] = 1;
            fork[i] = 1;
        }
        p = new JPanel() {

            public void paintComponent(Graphics g) {
                super.paintComponent(g);
                ImageIcon img = new ImageIcon(getClass().getResource(“/philosopher/image/9.jpg“));
                g.drawImage(img.getImage() 0 0 null);
                g.drawString(“《 ~哲学家 1~ 》“ 270 115);
                g.drawString(“《 ~哲学家 2~ 》“ 455 270);
                g.drawString(“《 ~哲学家 3~ 》“ 390 455);
                g.drawString(“《 ~哲学家 4~ 》“ 130 455);
                g.drawString(“《 ~哲学家 5~ 》“ 65 270);
            }
        };
        Class1.setBounds(10 20 70 40);
        Class2.setBounds(90 20 70 40);
        Class3.setBounds(250 20 70 40);

        p.setLayout(null);
        p.setBounds(0 0 850 650);
        p1.setOpaque(false);
        p1.setLayout(null);
        p1.setBounds(10 10 580 80);
        titledBorder t = new titledBorder(“请选择按钮“);
        p1.setBorder(t);
        p1.add(Class1);
        p1.add(Class2);
        p1.add(Class3);

        p2.setOpaque(false);
        p2.setLayout(null);
        p2.setBounds(10 100 580 490);
        p2.setBorder(new LineBorder(Color.LIGHT_GRAY 2));
        p20 = new Newp(l[0]);
        p20.setOpaque(false);
        p20.setLayout(null);
        p20.setBounds(240 20 110 110);
        p20.setBorder(new LineBorder(Color.LIGHT_GRAY 2));
        p21 = new Newp(l[1]);
        p21.setOpaque(false);
        p21.setLayout(null);
        p21.setBounds(435 180 110 110);
        p21.setBorder(new LineBorder(Color.LIGHT_GRAY 2));
        p22 = new Newp(l[2]);
        p22.setOpaque(false);
        p22.setLayout(null);
        p22.setBounds(370 365 110 110);
        p22.setBorder(new LineBorder(Color.LIGHT_G

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     928150  2013-01-14 19:12  201030690202蔡曼佳\201030690202蔡曼佳 实验报告.doc

     文件     389907  2013-01-06 09:51  201030690202蔡曼佳\可执行文件\Philosopher.exe

     文件     240725  2013-01-06 09:48  201030690202蔡曼佳\可执行文件\Philosopher.jar

     文件        160  2013-01-06 09:48  201030690202蔡曼佳\哲学家进餐源代码\build\built-jar.properties

     文件       3637  2013-01-06 09:48  201030690202蔡曼佳\哲学家进餐源代码\build\classes\philosopher\image\1.jpg

     文件       5622  2013-01-06 09:48  201030690202蔡曼佳\哲学家进餐源代码\build\classes\philosopher\image\2.jpg

     文件       5031  2013-01-06 09:48  201030690202蔡曼佳\哲学家进餐源代码\build\classes\philosopher\image\3.jpg

     文件      28146  2013-01-06 09:48  201030690202蔡曼佳\哲学家进餐源代码\build\classes\philosopher\image\4.jpg

     文件     178793  2013-01-06 09:48  201030690202蔡曼佳\哲学家进餐源代码\build\classes\philosopher\image\9.jpg

     文件       1340  2013-01-06 09:48  201030690202蔡曼佳\哲学家进餐源代码\build\classes\philosopher\Philosopher$1.class

     文件       1231  2013-01-06 09:48  201030690202蔡曼佳\哲学家进餐源代码\build\classes\philosopher\Philosopher$MyThread.class

     文件       3204  2013-01-06 09:48  201030690202蔡曼佳\哲学家进餐源代码\build\classes\philosopher\Philosopher$Newn.class

     文件       2411  2013-01-06 09:48  201030690202蔡曼佳\哲学家进餐源代码\build\classes\philosopher\Philosopher$Newo.class

     文件       2435  2013-01-06 09:48  201030690202蔡曼佳\哲学家进餐源代码\build\classes\philosopher\Philosopher$Newp.class

     文件       6743  2013-01-06 09:48  201030690202蔡曼佳\哲学家进餐源代码\build\classes\philosopher\Philosopher.class

     文件       3728  2013-01-01 19:33  201030690202蔡曼佳\哲学家进餐源代码\build.xml

     文件     389907  2013-01-06 09:51  201030690202蔡曼佳\哲学家进餐源代码\dist\Philosopher.exe

     文件     240725  2013-01-06 09:48  201030690202蔡曼佳\哲学家进餐源代码\dist\Philosopher.jar

     文件       1327  2013-01-06 09:48  201030690202蔡曼佳\哲学家进餐源代码\dist\README.TXT

     文件         85  2013-01-01 19:33  201030690202蔡曼佳\哲学家进餐源代码\manifest.mf

     文件      56959  2013-01-01 19:33  201030690202蔡曼佳\哲学家进餐源代码\nbproject\build-impl.xml

     文件        475  2013-01-01 19:33  201030690202蔡曼佳\哲学家进餐源代码\nbproject\genfiles.properties

     文件         93  2013-01-01 19:33  201030690202蔡曼佳\哲学家进餐源代码\nbproject\private\private.properties

     文件        211  2013-01-06 14:06  201030690202蔡曼佳\哲学家进餐源代码\nbproject\private\private.xml

     文件        211  2013-01-01 21:26  201030690202蔡曼佳\哲学家进餐源代码\nbproject\private\private.xml.0.nblh~

     文件       2340  2013-01-01 19:33  201030690202蔡曼佳\哲学家进餐源代码\nbproject\project.properties

     文件        519  2013-01-01 19:33  201030690202蔡曼佳\哲学家进餐源代码\nbproject\project.xml

     文件       3637  2013-01-02 12:24  201030690202蔡曼佳\哲学家进餐源代码\src\philosopher\image\1.jpg

     文件       5622  2013-01-02 12:26  201030690202蔡曼佳\哲学家进餐源代码\src\philosopher\image\2.jpg

     文件       5031  2013-01-02 12:25  201030690202蔡曼佳\哲学家进餐源代码\src\philosopher\image\3.jpg

............此处省略22个文件信息

评论

共有 条评论