为了账号安全,请及时绑定邮箱和手机立即绑定

一个java多线程问题

一个java多线程问题

子衿沉夜 2019-02-26 23:45:20
主方法起一个线程,线程先休眠一秒,然后设置线程中的一个变量,然后打印一些信息表示执行完毕。主方法这边轮询检查线程变量是否有值,一旦有值则跳出循环,打印一下信息表示执行完毕。 关键来了。 如果注释掉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"); } }
查看完整描述

2 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

这个问题我回答过不止一次啦。你可以看看我写的文章:volatile 关键字的使用 的第一节,保证内存可见性

查看完整回答
反对 回复 2019-03-01
  • 2 回答
  • 0 关注
  • 451 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信