Java多线程并发修改问题

qq_18295431 2016-07-01 08:39:40
为什么会打印了18而name的值却是为null呢?明明name复制比age早。希望各位能解答我的疑问谢谢!
...全文
268 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_34630879 2016-07-02
  • 打赏
  • 举报
回复
引用 2 楼 qq_18295431 的回复:
怎么可以看得出来是这样的呢还是你分析出来的谢谢
T1是生产者,T2是消费者。要先生产再消费。也就是说T1一定要先运行。T2要等待T1运行结束再运行。 PS. 明白了就请结贴,回复请引用。
rickylin86 2016-07-02
  • 打赏
  • 举报
回复

t1.start();
		try{
			Thread.sleep(1000);
		}catch(InterruptedException e){
			e.printStackTrace();
		}
		t2.start();
你修改成这试试看. 你的代码只是在main方法中启动线程t1和t2.但是并不能保证到底哪个线程先执行.
qq_18295431 2016-07-01
  • 打赏
  • 举报
回复
怎么可以看得出来是这样的呢还是你分析出来的谢谢
baidu_34630879 2016-07-01
  • 打赏
  • 举报
回复
T1和T2是一起跑的。谁抢到CPU谁就跑。T2先跑到s.name 发现是空,然后T1抢到了,T1开始跑,T1一下就跑到age=18,然后T2跑s.age。这时候age已经赋值了。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧