class A implements Runnable {
int i; public void run() {
try {
Thread.sleep(5000);
i = 10;
} catch (InterruptedException e) {
System.out.println("问题1");
}
}
}public class Test {
public static void main(String args[]) {
try {
A a = new A();
Thread t = new Thread(a);
t.start();
// t.join();
int j = a.i;
System.out.println(j);
} catch (Exception e) {
System.out.println("问题2");
}
}
}如果屏蔽t.joinj就是0,如不不屏蔽是10.不明白java.join具体作用,知道的人请给详解。
int i; public void run() {
try {
Thread.sleep(5000);
i = 10;
} catch (InterruptedException e) {
System.out.println("问题1");
}
}
}public class Test {
public static void main(String args[]) {
try {
A a = new A();
Thread t = new Thread(a);
t.start();
// t.join();
int j = a.i;
System.out.println(j);
} catch (Exception e) {
System.out.println("问题2");
}
}
}如果屏蔽t.joinj就是0,如不不屏蔽是10.不明白java.join具体作用,知道的人请给详解。
表示其它线程都要等到t执行完成后才开始执行。
所以就出现你所说的结果。
t.join()是等待t完了再继续
join()方法里面调用了wait();方法把进来执行改代码的线程睡在 t的对象上,
等t线程把run()方法执行完成后会叫醒所有睡在t对象上的线程