资源简介
实验一 进程同步互斥——不死锁的哲学家问题
(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.xm
文件 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.xm
文件 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.xm
文件 211 2013-01-01 21:26 201030690202蔡曼佳\哲学家进餐源代码\nbproject\private\private.xm
文件 2340 2013-01-01 19:33 201030690202蔡曼佳\哲学家进餐源代码\nbproject\project.properties
文件 519 2013-01-01 19:33 201030690202蔡曼佳\哲学家进餐源代码\nbproject\project.xm
文件 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个文件信息
相关资源
- Pintos 西电操作系统课程设计3 报告+代
- 安徽大学操作系统试卷.zip
- 现代操作系统英文原版第四版Modern
- 操作系统进程管理实验含源代码
- 操作系统精髓与设计原理 第六版 习题
- 操作系统原理第三版
- 操作系统存储管理LRU
- 操作系统精髓与设计原理第8版英文
- 操作系统设计与实现第三版pdf英文版
- 东北大学操作系统全套课件
- 计算机操作系统第二版 郑鹏
- 计算机操作系统课件+考研冲刺班讲义
- 操作系统课设两道批处理系统的两极
- 操作系统Nachos实验---4个全的。。
- 计算机操作系统教程第3版+张尧学+史
- 操作系统完全课件及其实验课件罗宇
- 模拟一个简单操作系统
- RTAI Linux实时操作系统原理剖析
- 杭电操作系统实验一--linux内核编译添
- 操作系统概念第七版配套PPT
- 中科大高级操作系统资料
- 带UCOS操作系统的STM32平衡车PWM
- 何炎祥高级操作系统PDF全
- 全套清华大学操作系统课件
- arm平台可用的RTOS_Nucleus操作系统源码
- WEBOS 网络操作系统
- 实验一shell实验报告
- 《操作系统概念》第七版 影印版高等
- 四进制小波变换
- S3C2440平台操作系统内核设计与实现
评论
共有 条评论