在代码里,我把a.join()写在上面时能正常输出,就是先把A类的i先全部输出完,然后输出main里面的i
当时我把a.join()方法写在for循环的后面就不行了,就是main输出一点,A类的也输出一点,跟没写join()方法类似
有人能详细解释下吗?public class TestJoin {
public static void main(String args[]) throws Exception {
A a = new A();
a.start();
//a.join();
for(int i=0; i<100; i++)
System.out.println("main--i" + i);
a.join(); //写在这不行
}
}class A extends Thread {
public void run() {
for(int i=0; i<100; i++)
System.out.println("i" + i);
}
}
当时我把a.join()方法写在for循环的后面就不行了,就是main输出一点,A类的也输出一点,跟没写join()方法类似
有人能详细解释下吗?public class TestJoin {
public static void main(String args[]) throws Exception {
A a = new A();
a.start();
//a.join();
for(int i=0; i<100; i++)
System.out.println("main--i" + i);
a.join(); //写在这不行
}
}class A extends Thread {
public void run() {
for(int i=0; i<100; i++)
System.out.println("i" + i);
}
}
解决方案 »
- 一个关于HashMap的题目
- J2SE JFrame 关闭问题
- 账号和密码这种系统登录的方式,不安全
- j初学ava桌面程序,LABLE能显示一个变量么?
- 为什么会重复的读取文件???
- 关于ArrayList查找问题,请指教
- !!!!!!!!!!!超级简单的问题,送分了,up且解答者给高分!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- StringBuffer的变量'123456',怎样才能转换成Integer?
- #######征集:想问问大家,都是用什么工具做java项目的安装程序的######
- SCJP有没有用
- snmp
- Java File和FileInputStream 解决不了路径中有空格的问题么?
解释我写在了code的注释里:
/**
* @author bzwm
*
*/
public class TestJoin {
public static void main(String args[]) throws Exception {
A a = new A();
a.start();
//当前线程(即main方法的线程)调用了a.join(),表示当前线程阻塞,等待a线程结束了才能继续向下执行
a.join();
for (int i = 0; i < 100; i++)
System.out.println("main--i" + i);
//如果在这里加了a.join(),这个时候main方法的线程已经走到了最后,(除了最后的a.join())
//做个假设,线程a里要输出十万次,而main方法要输出100次,很可能是main的输出100次先结束,
//main的输出结束后执行a.join(),就是等待线程a里的十万次都输出完,才算整个程序结束,JVM停止。
a.join(); //写在这不行
}
}class A extends Thread {
public void run() {
for (int i = 0; i < 100; i++)
System.out.println("i" + i);
}
}