创建线程的两种方法你都没用到晕
1。extends Thread
2.implement Runnunable
然后才用到这个同步啊
晕^_^,看题要仔细啊

解决方案 »

  1.   

    这样应该可以,不过5和10也太小了,看不出效果,可以用20,30以上试试,当然结果会溢出。或者么,换个慢点的机器。public class Factor implements Runnable{
        public  int num;
        public  long sum,i;
        public static Object ob;
        public static void main(String args[]) {
         ob=new Object();
         Factor p1 = new Factor();
         Factor p2 = new Factor();
         p1.num=20;
         Thread t1=new Thread(p1);
         t1.start();
         p2.num=30;
         Thread t2=new Thread(p2);
         t2.start();
        
        }
        
        public void run(){
            synchronized(ob){
         sum=1;
         for(i=1;i<=num;i++){
         System.out.println("i="+i+Thread.currentThread().getName());
         sum=sum*i;
         }
             System.out.println(sum);
         }
    }
    }