• 大小: 14KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-05-05
  • 语言: Java
  • 标签: java  ui  

资源简介

这个文件为各个类的源代码文件,因为在银行家算法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


评论

共有 条评论