资源简介
这个文件为各个类的源代码文件,因为在银行家算法java实现带UI界面.docx文件中将BankMainUI.java文件写错了(由yu114提出的BankerMainUI.java与AddProcessDialog.java文件相同的问题),所以发布一下源代码一下。

代码片段和文件信息
package banker;
import java.util.ArrayList;
public class BankerAlgorithm {
// 表示系统中资源种类数
private final int _resourceClassesCount;
private final int[] _totalResource;
private ArrayList _processes = new ArrayList();
private StringBuffer _executeInfo = new StringBuffer(50);
public BankerAlgorithm(int[] totalResource int resourceClassesCount
ArrayList processes) {
_resourceClassesCount = resourceClassesCount;
_totalResource = totalResource;
_processes = processes;
}
private ArrayList newProcesses() {
ArrayList pList = new ArrayList();
for (Process p : _processes) {
pList.add(p.newProcess());
}
return pList;
}
public int[] getAvilable() {
int[] avilable = new int[_resourceClassesCount];
for (int i = 0; i < _resourceClassesCount; ++i) {
avilable[i] = _totalResource[i] - getResourceAllocated(i);
}
return avilable;
}
// index代表某个资源的索引结果为某个资源的已分配量.
private int getResourceAllocated(int index) {
int totalAllocated = 0;
for (Process p : _processes) {
int[] allocated = p.getAllocated();
totalAllocated += allocated[index];
}
return totalAllocated;
}
public boolean addProcess(Process p) {
if (isUniqueProcessId(p.getId())) {
_executeInfo.append(p.getId() + “=“ + p.toString());
return _processes.add(p);
} else {
_executeInfo.append(p.getId() + “与已有进程重名.“);
return false;
}
}
public boolean changeProcess(String oldProcessId Process newProcess) {
return changeProcess(oldProcessId newProcess.getId()
newProcess.getMaxNeed() newProcess.getAllocated());
}
public boolean changeProcess(String oldProcessId String newProcessId
int[] maxNeed int[] allocated) {
Process p = getProcessById(_processes oldProcessId);
_executeInfo.append(“进程“ + oldProcessId + “=“ + p.toString() + “\n“);
// oldProcessId与newProcessId说明更改的是同一个进程的其它部分即进程没有改名.
if (oldProcessId.equals(newProcessId)) {
p.setAllocated(allocated);
p.setMaxNeed(maxNeed);
_executeInfo.append(“更改为“ + p.getId() + “=“ + p.toString());
return true;
} else { // 进程改名需判断是不是一个独一无二的名称.
if (isUniqueProcessId(newProcessId)) {
p.setId(newProcessId);
p.setAllocated(allocated);
p.setMaxNeed(maxNeed);
_executeInfo.append(“更改为“ + p.getId() + “=“ + p.toString());
return true;
} else {
_executeInfo.append(newProcessId + “与已有进程重名.“);
return false;
}
}
}
public void removeProcess(String processId) {
removeProcess(getProcessById(_processes processId));
}
public void removeProcess(Process p) {
_processes.remove(p);
_executeInfo.append(p.getId());
}
public int[] getTotalResource() {
return _totalResource;
}
public String getExecuteInfo() {
// 若存在安全序列则要删除最后一个“->“.
int startIndex = _executeInfo.lastIndexOf(“->“);
if (startIndex != -1) {
_executeInfo.delete(startIndex startIndex + 2);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5056 2012-01-06 11:59 bankerUI\AddProcessDialog.java
文件 3100 2012-01-06 11:58 bankerUI\AddResourceDialog.java
文件 13892 2012-01-06 11:58 bankerUI\BankerMainUI.java
文件 6416 2012-01-06 11:57 bankerUI\ChangeProcessDialog.java
文件 2181 2012-01-06 11:58 bankerUI\DeleteProcessDialog.java
文件 3444 2012-01-06 11:58 bankerUI\RequestResourceDialog.java
文件 7617 2012-01-06 11:54 banker\BankerAlgorithm.java
文件 4020 2012-01-06 11:55 banker\Process.java
目录 0 2012-01-06 12:17 bankerUI
目录 0 2012-01-21 14:28 banker
----------- --------- ---------- ----- ----
45726 10
相关资源
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
- [免费]java实现有障碍物的贪吃蛇游戏
- java Servlet投票实例
- 操作系统作业 (pv,作业管理,等5个
- 基于C/S架构考试系统(Java)
- java access 仓库管理系统 源码
- 一元多项式相加 java实现
- java软件工程师简历模板——应届生
- DES(CFB) JAVA
- java读取局域网共享机器文件
- [免费]java学习 存储过程
- pl/0词法分析器和语法分析器(java)
评论
共有 条评论