📄 example9_13.java.bak
字号:
import java.awt.*;
import java.awt.event.*;
public class Example9_11
{
public static void main(String args[])
{ new FrameMoney();
}
}
class FrameMoney extends Frame implements Runnable,ActionListener
{ int money=100;TextArea text1,text2;
Thread 会计,出纳;
int weekday;
Button start=new Button("开始演示");
FrameMoney()
{ 会计=new Thread(this); 出纳=new Thread(this);//创建两个线程:会计、出纳。
text1=new TextArea(12,15); text2=new TextArea(12,15);
setLayout(new FlowLayout());
add(start);
add(text1);add(text2);
setVisible(true);
setSize(360,300);
validate();
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ setVisible(false);
}
}
);
start.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
if(!出纳.isAlive())
{
会计=new Thread(this);
出纳=new Thread(this);
}
try
{
会计.start();
出纳.start();
}
catch(Exception exp){}
}
public synchronized void 存取(int number) //存取方法。
{ if(Thread.currentThread()==会计)
{ text1.append("今天是星期"+weekday+"\n");
for(int i=1;i<=3;i++) //会计使用存取方法存入90元,存入30元,稍歇一下,
{ money=money+number; //这时出纳仍不能使用存取方法,
try { Thread.sleep(1000); //因为会计还没使用完存取方法。
}
catch(InterruptedException e){}
text1.append("账上有"+money+"万"+"\n");
}
}
else if(Thread.currentThread()==出纳)
{ text2.append("今天是星期"+weekday+"\n");
for(int i=1;i<=2;i++) //出纳使用存取方法取出30元,取出15元,稍歇一下,
{ money=money-number/2; //这时会计仍不能使用存取方法,
try { Thread.sleep(1000); //因为出纳还没使用完存取方法。
}
catch(InterruptedException e){}
text2.append("账上有"+money+"万"+"\n");
}
}
}
public void run()
{ if(Thread.currentThread()==会计||Thread.currentThread()==出纳)
{ for(int i=1;i<=3;i++) //从周一到周三会计和出纳都要使用帐本。
{ weekday=i;
存取(30);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -