public class ThreadTest1 { private int j; 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<10;i++) inc(); } } class Dec implements Runnable { public void run() { for(int i=0;i<10;i++) dec(); } } 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(); } } }