现在主线程到了某个位置时创建并启动了3个子线程:t1、t2和t3,仅当t1、t2、t3都完成自己任务(比如它们都要计算1到100之和)之后主线程才能执行其下面的工作(比如将t1、t2和t3的运算结果加起来并输出)。请问该如何实现这个功能?
听说好像要用到wait()、notify(),但不知道如何用到上面的例子上。
t1.join()
t2.join()
t3.join()
[quote]
仅当t1、t2、t3都完成自己任务(比如它们都要计算1到100之和)之后主线程才能执行其下面的工作
[/quote]
[code="java"]package org.demo.tmp;
/**
@file org.demo.tmp.Test.java
*/
public class Test1 {
/**
用来计数的类
@author
/
class CountDown {
/ count */
private int count;
public CountDown(int value){
this.count = value;
}
public void sub(int number){
count -= number;
}
public int getValue(){
return count;
}
}
/**
线程需要执行的任务
@author
*/
class Task1 implements Runnable{
/* total */
private int total = 0;
/* count */
private CountDown count;
/**
@Override
public void run() {
int sum = 0;
for (int i=1; i<=100; i++){
sum += i;
}
this.total = sum;
System.out.println(Thread.currentThread().getName() + " done.");
synchronized (count) {
count.sub(1);
if (count.getValue() <= 0){
count.notify();
}
}
}
/**