请写出下面程序的运行结果,代码如下
public class ThreadA {
public static void main(String[] args) {
ThreadB b = new ThreadB();
Threadc c = new Threadc();
c.setName("第二线程");
b.setName("第一线程");
c.start();
System.out.println(Thread.currentThread().getName()+" is start...");
synchronized(c){
try{
System.out.println("Waiting for b1 to complete...");
c.wait();
System.out.println("Completted.Now back to "+Thread.currentThread().getName());
b.start();
}catch(InterruptedException e){
}
}
}
}
class ThreadB extends Thread{
int total;
public void run(){
synchronized(this){
System.out.println(Thread.currentThread().getName() +" is running..");
for(int i = 0 ; i < 10 ; i++){
total += i;
}
System.out.println("total is " + total);
notifyAll();
}
}
}
class Threadc extends Thread{
int sum = 1;
public void run(){
synchronized(this){
System.out.println(Thread.currentThread().getName() +" is running...");
for(int i = 1 ; i < 10 ; i++){
sum *= i;
}
System.out.println("sum is " + sum);
notify();
}
}
}
2 运行结果为:
main is start...
Waiting for b1 to complete...
第二线程 is running...
sum is 362880
Completted.Now back to main
第一线程 is running..
total is 45
3分析如下: