每个对象在运行时都有一个关联的锁。这个锁可通过为方法添加关键字 synchronized 来获得。
对一个银行中的多项活动进行同步处理
public class Account { String holderName; float amount; public Account(String name, float amt) { holderName = name; amount = amt; }
public synchronized void deposit(float amt) { amount += amt; }
public synchronized void withdraw(float amt) { amount -= amt; }
public float checkBalance() { return amount; } } |
deposit() 和 withdraw() 函数都需要这个锁来进行操作,所以当一个函数运行时,另一个函数就被阻塞。请注意, checkBalance() 未作更改,它严格是一个读函数。因为 checkBalance() 未作同步处理,所以任何其他方法都不会阻塞它,它也不会阻塞任何其他方法,不管那些方法是否进行了同步处理。
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=465880