资源预览内容
第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
亲,该文档总共7页全部预览完了,如果喜欢就下载吧!
资源描述
操作系统实验(生产者消费者问题java实现)一 实验目的1 深刻理解进程同步的概念。2 掌握经典同步问题,生产者消费者问题。二 实验设备PC机三 实验内容 在Java开发平台模拟经典进程同步问题,生产者消费者问题。四 程序的主要代码import java.awt.*;import javax.swing.*;import java.awt.event.*;public class PAC extends JFrame protected JButton producer1,producer2,producer3,consumer1,consumer2,consumer3; protected JTextField blank1,blank2,blank3,blank4,blank5; int array = new int5; public PAC() JPanel p1 = new JPanel(new FlowLayout(FlowLayout.CENTER,2,2); p1.add(producer1 = new JButton(生产者1); p1.add(producer2 = new JButton(生产者2); p1.add(producer3 = new JButton(生产者3); JPanel p2 = new JPanel(new FlowLayout(FlowLayout.CENTER,2,2); p2.add(new JLabel(缓冲区); p2.add(blank1 = new JTextField(5); p2.add(blank2 = new JTextField(5); JPanel p3 = new JPanel(new FlowLayout(FlowLayout.CENTER,2,2); p3.add(consumer1 = new JButton(消费者1); p3.add(consumer2 = new JButton(消费者2); p3.add(consumer3 = new JButton(消费者3); JPanel p4 = new JPanel(new GridLayout(4,1,2,2); p4.add(new JLabel(阻塞队列); p4.add(blank3 = new JTextField(5); p4.add(blank4 = new JTextField(5); p4.add(blank5 = new JTextField(5); JPanel p5 = new JPanel(new GridLayout(3,1,10,50); p5.add(p1); p5.add(p2); p5.add(p3); JPanel p6 = new JPanel(new BorderLayout(3,3); p6.add(p4,BorderLayout.EAST); p6.add(p5,BorderLayout.CENTER); setLayout(new FlowLayout(FlowLayout.CENTER,10,20); this.getContentPane().add(p6); producer1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) wh(1); ); producer2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) wh(2); ); producer3.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) wh(3); );consumer1.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) whh(1););consumer2.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) whh(2););consumer3.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) whh(3);); public void wh(int n) for(int i = 0;i 5; i+) if(arrayi = 0 & array2 0) switch(-array2) case 1:consumer1.setEnabled(true);break; case 2:consumer2.setEnabled(true);break; case 3:consumer3.setEnabled(true);break; array2 = array3; array3 = array4; array4 = 0; break; else if(arrayi = 0 ) if(array1 = 0) arrayi = n; break; if(array1 != 0) arrayi = n; switch(n) case 1:producer1.setEnabled(false);break; case 2:producer2.setEnabled(false);break; case 3:producer3.setEnabled(false);break; break; blank1.setText( + array0); blank2.setText( + array1); blank3.setText( + array2); blank4.setText( + array3); blank5.setText( + array4); public void whh(int n) if (array0 != 0) switch(array2) case 1:producer1.setEnabled(true);break; case 2:producer2.setEnabled(true);break; case 3:producer3.setEnabled(true);break; for (int k = 0; k 4; k+) arrayk = arrayk + 1; array4 = 0; else for (int k = 2; k 5; k+) if (arrayk = 0) arrayk = -n; switch(n) case 1:consumer1.setEnabled(false);break; case 2:consumer2.setEnabled(false);break; case 3:consumer3.setEnabled(false);break; break; blank1.setText( + array0); blank2.setText( + array1); blank3.setText( + array2); blank4.setText( + array3); blank5.setText( + array4); public static void main(String args) PAC frame = new PAC(); frame.pack(); frame.setTitle(生产者与消费者问题实验); frame.setSize(500,300); frame.setLocationRelativeTo(null); frame.setDefaultCloseOpera
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号