代码运行了11次

来源:2-6 实现Runnable接口创建线程

qq_慕运维0194244

2022-04-09 17:09:04

相关截图:

问题描述:

我的运行结果是这样的,是什么原因导致的呢请问

相关截图:

https://img.mukewang.com/climg/62514ce309e2bad409600392.jpghttps://img.mukewang.com/climg/62514cba095697d508780804.jpg

写回答

1回答

好帮手慕小脸

2022-04-09

同学你好,因为创建了两个线程,两个线程之间是不安全的。这里同学可参考如下分析:

当i=10的时候

线程0   运行到了while(i<=10),判断while条件成立,进入while内部,但是在还没有开始执行while的内部指令时,线程1也运行到了while(i<=10),这时候i的值还是10(线程0还没有开始执行i++),所以也判断条件成立,也进入while内部。

线程0执行完while内部时i的值为11,然后线程1才开始执行while内部,所以多执行一次循环。

简单点说,就是当i=10的时候(前面已经运行9次),有可能线程0和线程1同时读取了i=10,同时判断while(i<=10)条件成立后,进入while内部开始执行各自的指令。所以最终的结果有可能是运行了11次。但这个也是随机的,多运行几次,有时候是10次,有时候是11次。

祝学习愉快~


0

0 学习 · 9886 问题

查看课程