⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainframe.java~7~

📁 此源码是实现线程间同步互斥的算法
💻 JAVA~7~
字号:
package jthreadsynch;import java.awt.*;import java.awt.event.*;import javax.swing.*;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2002</p> * <p>Company: </p> * @author unascribed * @version 1.0 */public class MainFrame extends JFrame {  private JPanel contentPane;  private BorderLayout borderLayout1 = new BorderLayout();  private JLabel jLabel1 = new JLabel();  public JProgressBar jProgressBar1 = new JProgressBar();  private JButton jButton1 = new JButton();  private JScrollPane jScrollPane1 = new JScrollPane();  private JTextArea jTextArea1 = new JTextArea();  private int sharedData=0;  private boolean dataAvailable=false;  private Producer pro=null;  //Construct the frame  public MainFrame() {    enableEvents(AWTEvent.WINDOW_EVENT_MASK);    try {      jbInit();    }    catch(Exception e) {      e.printStackTrace();    }  }  //Component initialization  private void jbInit() throws Exception  {    //setIconImage(Toolkit.getDefaultToolkit().createImage(MainFrame.class.getResource("[Your Icon]")));    contentPane = (JPanel) this.getContentPane();    jLabel1.setFont(new java.awt.Font("Dialog", 0, 14));    jLabel1.setHorizontalAlignment(SwingConstants.CENTER);    jLabel1.setText("线程同步互斥");    contentPane.setLayout(borderLayout1);    this.setSize(new Dimension(383, 204));    this.setTitle("JThreadSynch");    jButton1.setFont(new java.awt.Font("Dialog", 0, 14));    jButton1.setToolTipText("");    jButton1.setText("Start");    jButton1.addActionListener(new java.awt.event.ActionListener() {      public void actionPerformed(ActionEvent e) {        jButton1_actionPerformed(e);      }    });    jProgressBar1.setOrientation(JProgressBar.VERTICAL);    jProgressBar1.setPreferredSize(new Dimension(150, 148));    contentPane.add(jLabel1, BorderLayout.NORTH);    contentPane.add(jProgressBar1, BorderLayout.WEST);    contentPane.add(jButton1, BorderLayout.SOUTH);    contentPane.add(jScrollPane1, BorderLayout.CENTER);    jScrollPane1.getViewport().add(jTextArea1, null);  }  //Overridden so we can exit when window is closed  protected void processWindowEvent(WindowEvent e) {    super.processWindowEvent(e);    if (e.getID() == WindowEvent.WINDOW_CLOSING) {      System.exit(0);    }  }  public synchronized int setSharedData(){    if(this.dataAvailable){      try{        wait();      }catch(Exception err){        err.printStackTrace();      }    }    this.sharedData++;    this.jTextArea1.append("Producer working ...."+"NewData is"+String.valueOf(this.sharedData)+"\n");    if(this.sharedData==100){      this.jTextArea1.append("Producer has done all things"+"Consumer,it's time to wake up! "+"\n");      this.dataAvailable=true;      notifyAll();    }    return this.sharedData;  }  public synchronized int getSharedData(){    if(!this.dataAvailable){      try{        wait();      }catch(Exception err){      err.printStackTrace();      }    }    this.sharedData--;    this.jTextArea1.append("Consumer is working ....."+"NewData is "+String.valueOf(this.sharedData)+"\n");    if(this.sharedData==0){      this.jTextArea1.append("Consumer has done all things"+"Producer,it's time to wake up! "+"\n");      this.dataAvailable=false;      notifyAll();    }    return this.sharedData;  }  void jButton1_actionPerformed(ActionEvent e) {    if(((JButton)e.getSource()).getText().equals("Start")){      ((JButton)e.getSource()).setText("Stop");      pro=new Producer(this);      pro.start();    }else{      ((JButton)e.getSource()).setText("Start");      pro.stopped=true;    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -