基于界面的银行家算法java实现_java实现银行家算法(Swing界面)
java代碼實現(xiàn)了銀行家算法,界面寫的個人認為還是較為細致的,完整的實現(xiàn)了找安全序列等算法功能,可作為參考學習銀行家算法。
直接上代碼:①界面展示方法:
public void ShowFrame()
{
this.setSize(500, 350); //大小
this.setAlwaysOnTop(true);
this.setResizable(false);//不可拖動
this.setLayout(new BorderLayout());
this.setTitle("lly_banktest");
jp1=new JPanel();
String s[]= {"Allocation","Max","Available","Request"};
jcb1=new JComboBox(s);
jp1.add(jcb1);
jp1.add(new JLabel("PID:"));
jtf1=new JTextField(3);
jp1.add(jtf1);
jp1.add(new JLabel("A:"));
jtf2=new JTextField(3);
jp1.add(jtf2);
jp1.add(new JLabel("B:"));
jtf3=new JTextField(3);
jp1.add(jtf3);
jp1.add(new JLabel("C:"));
jtf4=new JTextField(3);
jp1.add(jtf4);
jb1=new JButton("確定");
jp1.add(jb1);
jb1.addActionListener(this);
this.add(jp1,"South");
jta1= new JTextArea(); //顯示文件本域
ShowData(); //顯示數(shù)據(jù)
jta1.setLineWrap(true); //自動適應(yīng)
int r,g,b;
jta1.setBackground(Color.white);
jta1.setEditable(false);
this.add(jta1,"Center");
// Font f=new Font("Dialog",Font.BOLD,12); //
jp1.setBackground(new java.awt.Color(128,255,128));
}
public void ShowData(){
jta1.setText(" Max \tAllocation Need \tAvailable\n");
jta1.append("\n"+" 資源: " + " A B C " +" A B C " +
" A B C " +" A B C");
jta1.append("\n 進程\n "+pname[0]+" " +
+Max[0][0]+" "+Max[0][1]+" "
+Max[0][2]+" " +
" "+Allocation[0][0]+" "+Allocation[0][1]
+" "+Allocation[0][2]+" " +
" "+Need[0][0]+" "+Need[0][1]
+" "+Need[0][2]+" " +
" "+Available[0]+" "+Available[1]+
" "+Available[2]);
for(int i=1;i<5;i++)
{
jta1.append("\n\n "+pname[i]+" " +
" "+Max[i][0]+" "+Max[i][1]+" "+Max[i][2]+" " +
" "+Allocation[i][0]+" "+Allocation[i][1]
+" "+Allocation[i][2]+" " +
" "+Need[i][0]+" "+Need[i][1]
+" "+Need[i][2]+" " );
}
jtf1.setText("");
jtf2.setText("");
jtf3.setText("");
jtf4.setText("");
}
截圖:
②算法實現(xiàn)代碼:
public void myAllocation(int i) //分配資源
{
for (int j=0;j
{
Available[j]=Available[j]-Request[j];
Allocation[i][j]=Allocation[i][j]+Request[j];
Need[i][j]=Need[i][j]-Request[j];
}
}
public boolean judge(int i, int Request[] ) //初步檢查是否有足夠資源
{
boolean choice=false;
for(int j=0;j
if(Request[j]>Need[i][j])
break;
if(Request[j]>Available[j])
break;
else choice=true;
}
return choice;
}
public boolean SaftyCheck(int p) //安全性檢查
{
int k = 0;
boolean b=true;
Work=new int[sno]; //定義工作向量并賦初值
Finish=new boolean[pno];
for(int i=0;i
{
Work[i]=Available[i];
}
for(int i=0;i
Finish[i]=false; //初值為false
Finish[p]=true; //初次檢查
for(int j=0;j
{
Work[j]=Work[j]+Allocation[p][j];
}
temp[k++]=p;
boolean found = false;//標記是否找到安全進程
while(k
for(int i=0;i
{
boolean flag=true;//標記是否有足夠資源
if(Finish[i]) continue ;
for(int j=0;j
{
if(Need[i][j]>Work[j]) //資源不足,退出
{
flag=false;
break;
}
}
if(flag) //找到資源
{
temp[k++]=i;//存儲安全序列
Finish[i]=true;
found=true;
for(int j=0;j
Work[j]=Work[j]+Allocation[i][j];
}
}
if(found)
{
found=false;
}
else break;//遍歷,試分配失敗跳出
}
for(int i=0;i
if(!Finish[i])
{
b=false;
break;
}
}
return b;
}
總結(jié)
以上是生活随笔為你收集整理的基于界面的银行家算法java实现_java实现银行家算法(Swing界面)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深海泰坦x8ti怎么u盘启动 深海泰坦x
- 下一篇: java列出文件正则过滤_JAVA正则表