在下面这段程序里面有一个while语句,但是语句后直接就跟着分号,这和普通的while语句有什么区别吗? 管辖的范围有多大?class Bank
{
private Account[] account;
private boolean locked;
public Bank()
{
account = new Account[100];
for(int i = 0; i < account.length; i++)
{
account[i] = new Account();
}
locked = false;
}
public void transferMoney(int accountNumber, float amount)
{
while(locked);
locked = true;
float oldBalance = account[accountNumber].getBalance();
float newBalance = oldBalance + amount;
account[accountNumber].setBalance(newBalance);
locked = false;
}
}
while(locked)要是一直包含到locked = false;和现在的有区别吗?

解决方案 »

  1.   

    这句话 如果locked==true的话 就不执行下去了 等待locked的值改变
      

  2.   

    如果是这样的话为什么在 while(locked);后面还要再加上一个locked = true;呢? while语句里面本身已经包含了locked = true;的意思了啊。
      

  3.   

    这应该是项目的一部分,用在单独线程里,如ls所言,"while(locked);"就是判断记录是否被锁(locked),如被锁则等待解锁,否则将它锁住(locked = true)并进行操作,操作完成后解锁(locked = false)。
      

  4.   

    应该就是这个意思了,我估计其实就是这样的。public void transfer(){
    while(locked){
    try{ wait(); }
    catch(InterruptedException e){}
    }
    locked = true;
    ... 
    }