日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。