日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

基于界面的银行家算法java实现_java实现银行家算法(Swing界面)

發布時間:2024/10/8 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于界面的银行家算法java实现_java实现银行家算法(Swing界面) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java代碼實現了銀行家算法,界面寫的個人認為還是較為細致的,完整的實現了找安全序列等算法功能,可作為參考學習銀行家算法。

直接上代碼:①界面展示方法:

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(); //顯示數據

jta1.setLineWrap(true); //自動適應

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("");

}

截圖:

②算法實現代碼:

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;

}

總結

以上是生活随笔為你收集整理的基于界面的银行家算法java实现_java实现银行家算法(Swing界面)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。