📄 clerk.java
字号:
public class Clerk implements Runnable
{
private Bank theBank; // The employer - an electronic marvel
private Transaction inTray; // The in-tray holding a transaction
// Constructor
public Clerk(Bank theBank)
{
this.theBank = theBank; // Who the clerk works for
inTray = null; // No transaction initially
}
// Receive a transaction
synchronized public void doTransaction(Transaction transaction)
{
while(inTray != null)
try
{
wait();
}
catch(InterruptedException e)
{
System.out.println(e);
}
inTray = transaction;
notifyAll();
}
// The working clerk...
synchronized public void run()
{
while(true)
{
while(inTray == null) // No transaction waiting?
try
{
wait(); // Then take a break until there is
}
catch(InterruptedException e)
{
System.out.println(e);
}
theBank.doTransaction(inTray);
inTray = null; // In-tray is empty
notifyAll(); // Notify other threads locked on this clerk
}
}
// Busy check
synchronized public void isBusy()
{
while(inTray != null) // Is this object busy?
try
{
wait(); // Yes, so wait for notify call
}
catch(InterruptedException e)
{
System.out.println(e);
}
return; // It is free now
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -