设计 4 个线程,其中两个线程每次对 j 增加 1,另两个线程对 j 每次减少 1;写出程序

答:以下程序使用内部类实现线程,对 j 增减的时候没有考虑顺序问题:

 public class TestThread { 
 private int j; 
 public TestThread(int j) {this.j = j;} 
 private synchronized void inc(){ 
 j++; 
 System.out.println(j + "--Inc--" + 
 Thread.currentThread().getName()); 
 } 
 private synchronized void dec(){ 
 j--; 
 System.out.println(j + "--Dec--" + 
 Thread.currentThread().getName()); 
 } 
 public void run() { 
 (new Dec()).start(); 
 new Thread(new Inc()).start(); 
 (new Dec()).start(); 
 new Thread(new Inc()).start(); 
 } 
 class Dec extends Thread { 
 public void run() { 
 for(int i=0; i<100; i++){ 
 dec(); 
 } 
 } 
 } 
 class Inc implements Runnable { 
 public void run() { 
 for(int i=0; i<100; i++){ 
 inc(); 
 } 
 } 
 } 
 public static void main(String[] args) { 
 (new TestThread(5)).run(); 
 } 
}