资源简介
用java来实现银行家算法和随机分配算法
采用多线程机制
采用配置文件
采用swing,图形界面方式
可以说是史上最强大的银行家算法
代码片段和文件信息
package lvkai;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.Properties;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.Jframe;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class Main extends Jframe {
Thread[] t;
private static final long serialVersionUID = 1L;
public static int sourceCount; // 定义系统的资源数
public static int processCount; // 定义系统的进程数目
static int[] available; // 定义系统可提供的资源数组
static Process[] processes; // 定义系统的进程
private boolean start = false; // 当start=true时,程序开始运行
public static boolean safe = false; // 定义是否用银行家算法,false表示不使用,true表示使用银行家算法
static JTextArea jta = new JTextArea(10 10);
JComboBox box = null;
public Main() {
this.settitle(“银行家算法与随机分配算法“);
this.setSize(600 400);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JButton button1 = new JButton(“运行“);
JButton button2 = new JButton(“停止进程运行“);
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
setStart(true);
jta.setText(“程序开始执行o(∩_∩)o...哈哈\n“);
if(0 == box.getSelectedIndex()){
safe = true;
} else{
safe = false;
}
}
});
button2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
stopThread();
}
});
String[] s = {“银行家算法“ “随机分配算法“};
box = new JComboBox(s);
panel.add(box);
panel.add(button1);
panel.add(button2);
jta.setText(“程序的运行结果就显示在这里....“);
JScrollPane sp=new JScrollPane(jta);
Container c = this.getContentPane();
c.add(panel BorderLayout.NORTH);
c.add(sp BorderLayout.CENTER);
this.setVisible(true);
}
// 对字符串进程处理的函数
private String trimTheBothSize(String string) {
string = string.substring(1 string.length() - 1);
return string;
}
/**
* 系统进程初始化
*/
public void init() {
// 定义读取配置文件的变量
Properties prop = new Properties();
try {
prop.load(this.getClass().getClassLoader().getResourceAsStream(
“config/config2.properties“));
} catch (IOException e) {
e.printStackTrace();
}
// 初始化processCount和processCount
sourceCount = Integer.parseInt(prop.getProperty(“source“));
processCount = Integer.parseInt(prop.getProperty(“process“));
// 定义processCount个进程,放在进程数组中
processes = new Process[processCount];
for (int i = 0; i < processCount; i++) {
processes[i] = new Process();
processes[i].id = i;
}
// 初始化available,系统可提供的资源向量
available = new int[sourceCount];
String[] allocationString = (prop.getProperty(“available“).substring(1
prop.getProperty(“available“).length() - 1)).split(““);
for (int i = 0; i < sourceCount; i++) {
available[i] = Integer.parseInt(al
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 390 2009-04-12 16:34 OSCourseDesign\.project
文件 232 2009-04-12 16:34 OSCourseDesign\.classpath
文件 263 2009-04-16 17:38 OSCourseDesign\bin\config\config.properties
文件 239 2009-04-17 17:32 OSCourseDesign\bin\config\config2.properties
文件 5880 2009-04-18 11:21 OSCourseDesign\bin\lvkai\Main.class
文件 6691 2009-04-18 10:28 OSCourseDesign\bin\lvkai\Process.class
文件 620 2009-04-18 11:21 OSCourseDesign\bin\lvkai\Main$2.class
文件 959 2009-04-18 11:21 OSCourseDesign\bin\lvkai\Main$1.class
文件 263 2009-04-16 17:38 OSCourseDesign\src\config\config.properties
文件 239 2009-04-17 17:32 OSCourseDesign\src\config\config2.properties
文件 5683 2009-04-18 11:21 OSCourseDesign\src\lvkai\Main.java
文件 8927 2009-04-18 10:28 OSCourseDesign\src\lvkai\Process.java
目录 0 2009-04-18 11:24 OSCourseDesign\bin\config
目录 0 2009-04-18 11:24 OSCourseDesign\bin\lvkai
目录 0 2009-04-18 11:24 OSCourseDesign\src\config
目录 0 2009-04-18 11:24 OSCourseDesign\src\lvkai
目录 0 2009-04-18 11:24 OSCourseDesign\bin
目录 0 2009-04-18 11:24 OSCourseDesign\src
目录 0 2009-04-18 11:24 OSCourseDesign
----------- --------- ---------- ----- ----
30386 19
- 上一篇:双色球JAVA代码
- 下一篇:android围棋源码
评论
共有 条评论