ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:136.23KB ,
资源ID:19473091      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19473091.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(银行家算法Word文档下载推荐.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

银行家算法Word文档下载推荐.docx

1、 int ID;/编号 int need;/资源需求数组 int max;/资源最大需求 int allocation;/资源分配数组 boolean finish=false; process(int ID,int a)/构造函数初始化对象 this.ID=ID; need=new inta; max=new inta; allocation=new inta; class Available/系统资源 int count;/资源的总量 int surplus;/可用资源数量 Available(int count) this.count=count;class MyTable extend

2、s JTable MyTable(Object a,Object name) super(a,name); public boolean isCellEditable(int row, int col)/重写该方法使表格的第一列不可编辑 if (col = 0) return false; else return true;class win extends JFrame implements ActionListener,TextListener JButton btn,btn1,btn3; JTextArea ta; JPanel p1,p2,p3; JLabel label1,label

3、2; processp;/进程数组 String ss=null; int num=0,n=0; StringBuffer b=new StringBuffer(进程资源状况t WorktNeedtAllocation Work+AllocationtFinish);/存储安全序列的详细信息 Container con; Available ava;/系统资源数组 boolean bl=false; TextField t=new TextField2; MyTable table; Object a; JScrollPane jp; Object name; int label=0; win

4、(String s) super(s); for(int i=0;i=0;) if(!Character.isDigit(str.charAt(i) return false; return true; public boolean request(processp,int n,int num,Availableava,String ss)/进程向系统请求资源 String sp=null; int a=new intnum+1; int j=0,i=0; if(ss.equals(Y)|ss.equals(y)/进程ID和各资源的请求量随机产生 for(i=0;a.length; if(i=

5、0) ai=(int)(Math.random()*n+1);/随机选择一个进程 else ai=(int)(Math.random()*avaj+.count);/随机产生对每个资源的请求量 else/自定义输入 i=0; try sp=JOptionPane.showInputDialog(this,请分别输入进程ID与资源的请求量,用逗号隔开 catch(Exception ex) StringTokenizer fenxi=new StringTokenizer(sp, while(fenxi.hasMoreTokens() ai+=Integer.parseInt(fenxi.nex

6、tToken(); ta.setText(null); ta.append(当前请求资源的进程编号为:+a0+n i=1;请求资源量为:( for(;num+1; ta.append(+ai); if(i!=num) ta.append( ta.append()n boolean bs=true,bd=true; for(i=1; if(pa0-1.needi-1avai.surplus) bs=false; if(!bs&!bd) return false; else i=1;j=0; for(;i+)/每个资源的可利用资源量减去当前进程的请求量 avaj.surplus-=ai; if(a

7、vaj.surplus0) JOptionPane.showMessageDialog(this,当前资源无法满足该进程的请求 break; else j+;i+)/更新当前资源的获得的已分配资源 pa0-1.needi-=ai+1; pa0-1.allocationi+=ai+1; if(j=num) elsereturn false; SuppressWarnings(unchecked public void checkSafe(processp,Availableava,StringBuffer b,int n,int num) Queue queue=new LinkedList()

8、;/安全队列 int q=new intnum; qi=avai.surplus; int x=0;n; for(int j=0;jj+) x=0; for(int k=0;kk+) if(pj.needk=qk&pj.finish)/当前进程对当前资源的需求小于系统可用资源量 x+; elsebreak; if(x=num)/系统可用资源满足当前的进程 pj.finish=true;/当前进程的请求,系统资源满足,改变其Finish属性 b.append(+pj.ID+t/将该进程的信息存入变量b中 for(int m=0;m2*num) return p; public void acti

9、onPerformed(ActionEvent e) if(e.getSource()=btn)/显示表格 a=new Objectn2*num+1;2*num+1; if(j!=0) aij=0; else进程+(i+1); name=new Object2*num+1; int j=0; namei=进程编号 i+;Max For 资源+(+j); namei+1=Hava For 资源+(j); i+=2; table=new MyTable(a,name); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);/当调整表的大小时,设置表的自动

10、调整模式为不自动调整列的宽度,使用滚动条 table.setCellSelectionEnabled(true);/设置此表允许同时行选择 jp=new JScrollPane(table); con.add(jp,BorderLayout.CENTER); btn.setEnabled(false); t0.setEnabled(false); t1.setEnabled(false); if(e.getSource()=btn1)/进程创建完成,开始运行 if(label1)/第一次运行 con.remove(jp); con.add(ta,BorderLayout.CENTER); va

11、lidate(); label+;/执行次数request(p,n,num,ava,ss) System.out.println(212当前系统可利用资源无法满足进程的需求! checkSafe(p,ava,b,n,num);/安全序列 btn1.setEnabled(false); if(e.getSource()=btn3) needofA(n,num,p,table);/计算每种资源的需求量i+)/计算每种资源的可用资源数量 int sum=avai.count; for(int j=0; sum-=pj.allocationi; avai.surplus=sum; btn1.setEn

12、abled(true); con.remove(btn3); con.add(p2,BorderLayout.SOUTH); ss=JOptionPane.showInputDialog(this,进程与请求随机产生清输入Y,自定义请输入N! public void textValueChanged(TextEvent e) if(e.getSource()=t1) if(isNumeric(t1.getText() String s1=JOptionPane.showInputDialog(请分别输入+t1.getText()+个系统资源的总量,用逗号隔开 StringTokenizer f

13、enxi=new StringTokenizer(s1, num=fenxi.countTokens(); int i=0; ava=new Availablenum; String s=fenxi.nextToken(); if(isNumeric(s) avai+=new Available(Integer.parseInt(s);/创建系统资源 JOptionPane.showMessageDialog(this,系统资源数目不能为字符! break; p=new processInteger.parseInt(t0.getText(); for(i=0; pi=new process(

14、i+1,num);/创建进程系统种类数不能为字符! catch(Exception e0) if(e.getSource()=t0) if(t0.getText().length()1)进程数不能为空! if(isNumeric(t0.getText() n=Integer.parseInt(t0.getText(); JOptionPane.showMessageDialog(this,进程数只能为数字! catch(Exception ee) public class banker public static void main(String a) new win(银行家算法四、测试数据与实验结果

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1