資源簡介
這個文件為各個類的源代碼文件,因為在銀行家算法java實現(xiàn)帶UI界面.docx文件中將BankMainUI.java文件寫錯了(由yu114提出的BankerMainUI.java與AddProcessDialog.java文件相同的問題),所以發(fā)布一下源代碼一下。

代碼片段和文件信息
package?banker;
import?java.util.ArrayList;
public?class?BankerAlgorithm?{
//?表示系統(tǒng)中資源種類數(shù)
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? avilable[i]?=?_totalResource[i]?-?getResourceAllocated(i);
}
return?avilable;
}
//?index代表某個資源的索引結(jié)果為某個資源的已分配量.
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
評論
共有 條評論