????????????Java?е??????????????????СС??????????????Java?е?????????????ж????????Counter???????????????

public class Counter {
 private int c = 0;

 public void increment() {
  System.out.println("before increment?? c = " + c);
  c++;
  try {
   Thread.sleep(5);
  } catch (InterruptedException e) {
   e.printStackTrace();
  }
  System.out.println("after increment?? c = " + c);
 }

 public  void decrement() {
  System.out.println("before decrement?? c = " + c);
  c--;
  try {
   Thread.sleep(5);
  } catch (InterruptedException e) {
   e.printStackTrace();
  }
  System.out.println("after decrement?? c = " + c);
 }

 public int value() {
  return c;
 }

}

???????????Counter???????У?????increment??decrement????????????sleep(5)????????????????????????????????????????????????????Ч????

????????????????????ThreadA?е?????10??increment()????????ThreadB?е?????10??decrement()??????

????Thread??

public class ThreadA implements Runnable {
 private Counter c;

 public ThreadA(Counter c) {
  this.c = c;

 }

 @Override
 public void run() {

  for (int i = 0; i < 10; i++) {
   this.c.increment();
  }
 }

}

????ThreadB??

public class ThreadB implements Runnable {


 private Counter c;


 public ThreadB(Counter c) {
  this.c = c;
 }


 @Override
 public void run() {
  for (int i = 0; i < 10; i++) {
   this.c.decrement();
  }
 }


}