主程序如下:其中生成了两个线程threadA和ThreadB,他们共享Counter c。

public class Main {

 public static void main(String[] args) {
  Counter c = new Counter();
  ThreadA a = new ThreadA(c);
  ThreadB b = new ThreadB(c);
 
  Thread threadA = new Thread(a);
  Thread threadB = new Thread(b);
  threadA.start();
  threadB.start();
 }

}

  执行上面的代码,可能的结果如下:

  before increment, c = 0
  before decrement, c = 1
  after increment, c = 0
  before increment, c = 0
  after decrement, c = 1
  before decrement, c = 1
  after increment, c = 0
  before increment, c = 0
  after decrement, c = 1
  before decrement, c = 1
  after increment, c = 0
  before increment, c = 0
  after decrement, c = 1
  before decrement, c = 1
  after increment, c = 0
  before increment, c = 0
  after decrement, c = 1
  before decrement, c = 1
  after increment, c = 0
  before increment, c = 0
  after decrement, c = 1
  before decrement, c = 1
  after increment, c = 0
  before increment, c = 0
  after increment, c = 1
  before increment, c = 1
  after decrement, c = 2
  before decrement, c = 2
  after decrement, c = 1
  before decrement, c = 1
  after increment, c = 0
  before increment, c = 0
  after increment, c = 1
  before increment, c = 1
  after decrement, c = 2
  before decrement, c = 2
  after increment, c = 1
  after decrement, c = 1
  before decrement, c = 1
  after decrement, c = 0