代码如下:
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()方法不起作用?
如果去掉注释就能正常执行。

解决方案 »

  1.   

            for(int i=0; i>threads.length; i++) {
                System.out.println("-----------");
                threads[i].join();
            }i>thread.length, join没有被执行。
    sleep是static方法,最好用Thread.sleep
      

  2.   

    我不清楚你的代码是做啥的 不过你在for循环里写的join 在循环过程中主线程就会阻塞