background image

3   //critical code for accessing shared data.

5   //...

7   }

9
  在 Java 中,实现互斥语句的关键字叫 synchronized(同步),我认为这是一个不合
适的术语。同步应该定义为按照固定顺序发生的动作序列。这儿的含义显然是互斥访问的
含义。
  这儿 lock 是提供内部锁的对象。这个语句是互斥代码的一般写法。另外往往整个方法
需要进行互斥,这时就有所谓互斥方法。互斥方法根据方法类型的不同分为实例互斥方法
和静态互斥方法。实例互斥方法的例子如下:
1 public synchronized void addName(String name){

3   //Adding name to a shared list.

5   }

7   互斥实例方法实际获得的是当前实例对象的内部锁,前面的这个实例方法相当于
下面写法的互斥语句:

9   public void addName(String name){
10 
11   synchronized(this){
12 
13   //Adding name to a shared list.
14 
15   }
16 
17   }
18 
19
  静态互斥方法的例子如下:
1  publi class ClassA{

3   public static synchronized void addName(String name){

5   //Adding to a static shared list.

7   }