資源簡介
實驗一 進程同步互斥——不死鎖的哲學家問題
(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個文件信息
評論
共有 條評論