这个代码没有 synchronized也没报错啊,怎吗做到滴???
packagetank;
importjava.awt.BorderLayout;
importjava.awt.FlowLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
publicclassTestAppextendsJFrameimplementsActionListener,Runnable{
privateTestThreadthread=null;
publicTestApp(){
JPanelbuttons=newJPanel();
FlowLayoutlayout=newFlowLayout(FlowLayout.CENTER);
buttons.setLayout(layout);
add(buttons,BorderLayout.NORTH);
JButtonbtn=newJButton("pause");
btn.addActionListener(this);
buttons.add(btn);
JLabellabel=newJLabel();
add(label,BorderLayout.CENTER);
setSize(800,600);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
thread=newTestThread(label);
thread.start();
}
publicstaticvoidmain(String[]args){
newTestApp();
}
publicvoidactionPerformed(ActionEvente){
JButtonbtn=(JButton)e.getSource();
if("pause".equals(btn.getText())){
btn.setText("start");
thread.callWait();
}else{
btn.setText("pause");
thread.call();
}
}
publicvoidrun(){}
}
classTestThreadextendsThread{
privatebooleanisWait=false;
privateJLabellabe=null;
publicTestThread(JLabellabe){
this.labe=labe;
}
publicvoidrun(){
intindex=0;
while(true){
try{
if(isWait){
wait();
}
labe.setText(""+(++index));
sleep(500);
}catch(Exceptione){
}
}
}
publicsynchronizedvoidcallWait(){
isWait=true;
}
publicsynchronizedvoidcall(){
isWait=false;
notify();
}
}
你把异常吃掉了
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。