62,615
社区成员
发帖
与我相关
我的任务
分享
public class Main {
int num = 0;
public void addTo60() {
this.num += 60;
}
public static void main(String[] args) throws InterruptedException {
Main main = new Main();
Thread t = new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
main.addTo60();
System.out.println(main.num);
}
});
t.start();
while (main.num == 0) {
}
}
}
public class Main {
int num = 0;
public void addTo60() {
this.num += 60;
}
public static void main(String[] args) throws InterruptedException {
Main main = new Main();
Thread t = new Thread(new Runnable() {
@Override
public void run() {
main.addTo60();
}
});
t.start();
Thread.sleep(10);
System.out.println(main.num);
}
}
public class Main {
int num = 0;
public void addTo60() {
this.num += 60;
}
public static void main(String[] args) throws InterruptedException {
Main main = new Main();
Thread t = new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
main.addTo60();
System.out.println(main.num);
}
});
t.start();
while (main.num == 0) {
System.out.println(main.num);
}
}
}
你可以看到当while在执行时,线程也在同步执行,这时候主程序的num还是0,当线程执行完改变num数据后,主程序中的print语句才会收到数据改变的信息,打印60然后退出循环。