在编写一个类时如果该类中的代码可能运行于多线程环境下那么就要考虑同步的问题在Java中内置了语言级的同步原语synchronized这也大大简化了Java中多线程同步的使用 我们首先编写一个非常简单的多线程的程序是模拟银行中的多个线程同时对同一个储蓄账户进行存款取款操作的
在程序中我们使用了一个简化版本的Account类代表了一个银行账户的信息在主程序中我们首先生成了个线程然后启动它们每一个线程都对John的账户进行存元然后马上又取出元这样对于John的账户来说最终账户的余额应该是还是元才对然而运行的结果却超出我们的想像首先来看看我们的演示代码
class X
{
Sync gate; //
public void m()
{
try
{
gateacquire();
// block until condition holds
try
{
// method body
}
finally { gaterelease(); }
}
catch (InterruptedException ex) { // evasive action }
}
}
[] [] []