3 //critical code for accessing shared data.
4
5 //...
6
7 }
8
9
在 Java 中,实现互斥语句的关键字叫 synchronized(同步),我认为这是一个不合
适的术语。同步应该定义为按照固定顺序发生的动作序列。这儿的含义显然是互斥访问的
含义。
这儿 lock 是提供内部锁的对象。这个语句是互斥代码的一般写法。另外往往整个方法
需要进行互斥,这时就有所谓互斥方法。互斥方法根据方法类型的不同分为实例互斥方法
和静态互斥方法。实例互斥方法的例子如下:
1 public synchronized void addName(String name){
2
3 //Adding name to a shared list.
4
5 }
6
7 互斥实例方法实际获得的是当前实例对象的内部锁,前面的这个实例方法相当于
下面写法的互斥语句:
8
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{
2
3 public static synchronized void addName(String name){
4
5 //Adding to a static shared list.
6
7 }
8