public class IncDecThread {

    private int j=10;

    

    /*

     * 题目:用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1

     * 两个问题:

     * 1、线程同步--synchronized

     * 2、线程之间如何共享同一个j变量--内部类

     */

    public static void main(String[] args) {

        IncDecThread incDec=new IncDecThread();

        Inc inc=incDec.new Inc();

        Dec dec=incDec.new Dec();

        for(int i=0;i<2;i++){

            Thread thread=new Thread(inc);

            thread.start();

            thread=new Thread(dec);

            thread.start();

        }

    }

    public synchronized void inc(){

        j++;

        System.out.println(Thread.currentThread().getName()+"-inc:"+j);

    }

    public synchronized void dec(){

        j--;

        System.out.println(Thread.currentThread().getName()+"-dec:"+j);

    }

    

    class Inc implements Runnable{

        public void run(){

            for(int i=0;i<20;i++){

                inc();

            }

        }

    }

    class Dec implements Runnable{

        public void run(){

            for(int i=0;i<20;i++){

                dec();

            }

        }

    }

}