public class ThreadTest1{
  private int j;
  public static void main(String args[]){
ThreadTest1 tt=new ThreadTest1();
Inc inc=tt.new Inc();
Dec dec=tt.new Dec();
for(int i=0;i<2;i++){
Thread t=new Thread(inc);
t.start();
t=new Thread(dec);
t.start();
}
}
  private synchronized void inc(){
j++;
System.out.println(Thread.currentThread().getName()+"-inc:"+j);
  }
  private synchronized void dec(){
j--;
System.out.println(Thread.currentThread().getName()+"-dec:"+j);
  }
  class Inc implements Runnable{
public void run(){
for(int i=0;i<100;i++){
inc();
}
}
  }
  class Dec implements Runnable{
public void run(){
for(int i=0;i<100;i++){
dec();
}
 }
  }
}
求具体解释是什么意思

解决方案 »

  1.   

    class Inc implements Runnable{
    public void run(){
    for(int i=0;i<100;i++){
    inc();
    }
    }
      }class Dec implements Runnable{
    public void run(){
    for(int i=0;i<100;i++){
    dec();
    }
     }
      }
    两个实现Runnable借口的内部类ThreadTest1
      

  2.   

    Inc inc=tt.new Inc();
    Thread t=new Thread(inc); //建立一条线程
    t.start();               //此线程执行inc的run()方法
      

  3.   

    private synchronized void inc(){
    j++;
    System.out.println(Thread.currentThread().getName()+"-inc:"+j);
    }
    private synchronized void dec(){
    j--;
    System.out.println(Thread.currentThread().getName()+"-dec:"+j);
    }
    synchronized 表示在一个ThreadTest1的实例对象中,两个方法是同步的,即,在一个线程访问这两个方法中的一个的时候,其他准备访问这两个方法的线程,只能等待正在访问的线程执行完此方法后,才有可能执行这两个方法中的一个.
      

  4.   

    兄弟,你赚了.前几天我去面试的时候,一家公司给我题目,叫我笔试.
    就是你的代码.题目是:
    设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
    以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。就是多线程同步一个变量"j"了.弄得我同步单词半天写不出来,现在想想还郁闷.