这样应该可以,不过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 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);
}
}
}