主方法起一个线程,线程先休眠一秒,然后设置线程中的一个变量,然后打印一些信息表示执行完毕。主方法这边轮询检查线程变量是否有值,一旦有值则跳出循环,打印一下信息表示执行完毕。
关键来了。
如果注释掉System.out.println("xuanxue");
,那么主方法永远也跑不完,去掉注释就 ok。目前没有头绪,求各位大佬指教。
代码如下
/***App.java***/
public class App {
public static void main(String[] args) throws Exception{
Test1 test1 = new Test1();
new Thread(test1).start();
int i = 0;
while (test1.getName() == null){
// 关键点
//System.out.println("xuanxue");
i++;
}
System.out.println(test1.getName() + " " + i);
}
}
/*** Test1.java***/
public class Test1 implements Runnable{
String name;
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
name = "test1";
System.out.println("set name over");
}
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.