操作系统实验(生产者消费者问题java实现)
操作系统实验(生产者消费者问题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 int[5];
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);
}
});
consumer