public class JoinThread extends Thread {
public static int n = 0;
static synchronized void inc() {
n++;
}
public void run() {
for (int i = 0; i < 10; i++) {
try {
inc();
System.out.println(n);
sleep(3); // 为了使运行结果更随机,延迟3毫秒
} catch (Exception e) {
}
}
}
public static void main(String[] args) throws Exception {
Thread threads[] = new Thread[100];
for (int i = 0; i < threads.length; i++) // 建立100个线程
{
threads[i] = new JoinThread();
}
for (int i = 0; i < threads.length; i++) // 运行刚才建立的100个线程
{
threads[i].start();
}
// if (args.length > 0) {
for (int i = 0; i < threads.length; i++) // 100个线程都执行完后继续
{
threads[i].join(); //必须这个线程执行完,当前线程才能继续执行
}
// }
System.out.println("n=" + JoinThread.n);
}
}
?
??? 使当前线程必须等待调用join的线程执行完,才能继续执行。