importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
//窗口类
classwindowextendsJFrame{
publicJFramejf;
publicJPaneljp3;
publicScrollPanesp1,sp2,sp3;
publicContainerc;
window(){
jf=newJFrame();
jp3=newJPanel();
sp1=newScrollPane();
sp2=newScrollPane();
sp3=newScrollPane();
c=getContentPane();
c.setLayout(newGridLayout(2,2,10,10));
jf.add(c);
c.add(sp1);
c.add(sp2);
c.add(jp3);
c.add(sp3);
jf.setSize(400,300);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
//Share类
classShare{
privateintu,jishu=0;
privatebooleanavailable=false;
publicJTextAreajt=newJTextArea("==========生产消费状态==========\n\n");
//同步方法
publicsynchronizedintget(){
jishu++;
while(available==false){
try{wait();}
catch(InterruptedExceptione){}
jt.append(jishu+"Share中没有资源,消费者等待……\n");
}
available=false;
notifyAll();
jt.append(jishu+"正在唤醒生产者生产……\n");
returnu;
}
publicsynchronizedvoidput(intvalue){
jishu++;
while(available==true){
try{wait();}
catch(InterruptedExceptione){}
jt.append(jishu+"Share中已有资源,生产者等待……\n");
}
u=value;
available=true;
notifyAll();
jt.append(jishu+"正在唤醒消费者消费……\n");
}
//互斥方法
publicinthget(){
jishu++;
jt.append(jishu+"消费者正在消费资源……\n");
returnu;
}