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

📄 mainframe.java~5~

📁 此源码是实现线程间同步互斥的算法
💻 JAVA~5~
字号:
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();  private JProgressBar sharedjProgressBar1 = 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;  //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");    sharedjProgressBar1.setOrientation(JProgressBar.VERTICAL);    sharedjProgressBar1.setPreferredSize(new Dimension(150, 148));    contentPane.add(jLabel1, BorderLayout.NORTH);    contentPane.add(sharedjProgressBar1, 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 void 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();    }  }  public synchronized void 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();    }  }}

⌨️ 快捷键说明

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