th.random()*100));
sleep(1000);
}catch(InterruptedExceptione){}*/
}
}
}
//
程序入口
publicclassPCmx{
publicstaticvoidmain(String[]args){
windowwin=newwindow();
BHandlerh=newBHandler();
BHandler1h1=newBHandler1();
JButtonjb=newJButton("开始同步线程读写");
JButtonjb1=newJButton("开始互斥线程读写");
win.jf.setTitle("生产者与消费者同步与互斥
演示");
jb.addActionListener(h);
jb1.addActionListener(h1);
win.jp3.add(jb);
win.jp3.add(jb1);
h.winadd(win.jf,win.sp1,win.sp2,win.sp3,win.jp3,win.jp3);
h1.winadd(win.jf,win.sp1,win.sp2,win.sp3,win.jp3,win.jp3);
}
}
//同步按钮事件
classBHandlerimplementsActionListener{
privateScrollPanesp1,sp2,sp3;
privateJPaneljp1,jp2;
privateJFramejf;
JTextAreajt1=newJTextArea();
JTextAreajt2=newJTextArea();
publicvoidactionPerformed(ActionEvente){
jf.setTitle("生产者与消费者的同步与互斥-同步演示");
Shares=newShare();
Producerp=newProducer(s);
Consumerc=newConsumer(s);
sp1.add(p.jt);
sp2.add(c.jt);
sp3.add(s.jt);
p.start();
c.start();
}
publicvoidwinadd(JFramejff,ScrollPanes1,ScrollPanes2,ScrollPanes3,JPanelj1,JPanelj2){
jf=jff;
sp1=s1;
sp2=s2;
sp3=s3;
jp1=j1;
jp2=j2;
}
}
//互斥按钮事件
classBHandler1implementsActionListener{
privateScrollPanesp1,sp2,sp3;
privateJPaneljp1,jp2;
privateJFramejf;