资源简介
实验一 进程同步互斥——不死锁的哲学家问题
(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个文件信息
相关资源
- 升腾Win终端系统升级方法新版.doc
- Uninstall_Cortana_WINCLIENT.CN.rar
- STM32基于rt_thread操作系统的SDHC卡文件
- 操作系统 LRU算法 实验报告 及 程序代
- [免费]车载CE6.0操作系统
- 分页系统模拟实验 操作系统 课程设
- 模拟段页式虚拟存储管理中地址转换
- 操作系统实验——虚存管理实验
- 广工操作系统实验
- 广东工业大学操作系统实验四文件系
- linux下用多进程同步方法解决生产者
- Bochs入门教程[操作系统第一步]
- 操作系统课程设计完整版
- 磁盘调度算法的模拟实现及对比
- 模拟一个文件管理系统
- 二级文件系统(操作系统)
- uCOS编译环境建立 BC45 TASM
- 哲学家进餐问题 算法 vc源代码 测试通
- Linux 操作系统实验(全)
- 操作系统实验综合设计【附代码】
- 操作系统共享内存实验
- 操作系统循环首次适应算法
- 操作系统课程设计实现可变分区存储
- 基于GTK的Linux环境下的简易任务管理器
- 操作系统课程设计 二级文件管理系统
- 加快Windows XP操作系统开机速度
- 操作系统教程课后答案华中科技大学
- 51单片机中使用ucos ii的优缺点转
- 51单片机中使用ucos ii的优缺点
- 嵌入式实时操作系统ucos-II 第二版 源
评论
共有 条评论