代码如下:
package thread;import java.util.Date;public class JoinThread extends Thread{ public static int n=0;

private String name;

public JoinThread(String name) {
super(name);
}

static synchronized void inc() {
n++;
}

public void run() {
for(int i=0; i<10; i++) {
try {
inc();
System.out.println(new Date() + ":" + this.getName());
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

public static void main(String[] args) throws Exception {
Thread threads[] = new Thread[3];
for(int i=0; i<threads.length; i++) {
threads[i] = new JoinThread(String.valueOf(i));
}

for(int i=0; i<threads.length; i++) {
threads[i].start();
}

for(int i=0; i>threads.length; i++) {
System.out.println("-----------");
threads[i].join();
}
// threads[0].join();
// threads[1].join();
// threads[2].join();

System.out.println("输出结果:");
System.out.println(JoinThread.n);
}
}输出:
输出结果:
2
Thu Aug 18 10:07:54 CST 2011:2
Thu Aug 18 10:07:54 CST 2011:0
Thu Aug 18 10:07:54 CST 2011:1
Thu Aug 18 10:07:55 CST 2011:0
Thu Aug 18 10:07:55 CST 2011:2
Thu Aug 18 10:07:55 CST 2011:1
Thu Aug 18 10:07:56 CST 2011:1
Thu Aug 18 10:07:56 CST 2011:0
Thu Aug 18 10:07:56 CST 2011:2
Thu Aug 18 10:07:57 CST 2011:1
Thu Aug 18 10:07:57 CST 2011:2
Thu Aug 18 10:07:57 CST 2011:0
Thu Aug 18 10:07:58 CST 2011:1
Thu Aug 18 10:07:58 CST 2011:2
Thu Aug 18 10:07:58 CST 2011:0
Thu Aug 18 10:07:59 CST 2011:1
Thu Aug 18 10:07:59 CST 2011:2
Thu Aug 18 10:07:59 CST 2011:0
Thu Aug 18 10:08:00 CST 2011:1
Thu Aug 18 10:08:00 CST 2011:2
Thu Aug 18 10:08:00 CST 2011:0
Thu Aug 18 10:08:01 CST 2011:1
Thu Aug 18 10:08:01 CST 2011:2
Thu Aug 18 10:08:01 CST 2011:0
Thu Aug 18 10:08:02 CST 2011:1
Thu Aug 18 10:08:02 CST 2011:2
Thu Aug 18 10:08:02 CST 2011:0
Thu Aug 18 10:08:03 CST 2011:1
Thu Aug 18 10:08:03 CST 2011:2
Thu Aug 18 10:08:03 CST 2011:0为什么循环里面的join()方法不起作用?
如果去掉注释就能正常执行。