求问一个while语句的循环问题

Wyouxia 2021-01-16 10:48:09


为什么我的线程在调用的时候只能循环一次,但是将num++放在if语句的下面就可以正常循环呢?
...全文
797 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
冰思雨 2021-03-04
  • 打赏
  • 举报
回复
如果 num 没有自增操作,线程内的 while 循环,就变成死循环了,线程永远不会结束运行了。 楼主的 if 条件的意思,应该是,当 num 是奇数时 输出num并进行自增操作。但是,当 num 自增过后就变成偶数了,变成偶数后,if 条件无法满足,所以,num 无法进行输出和自增操作,while 循环的条件永远满足,变成了死循环。 楼主的代码除了 if 条件会造成死循环这个问题之外,还有一个问题就是,while 条件中的 num 变量,没有处于临界区内,不受多线程访问的保护。 在多线程并发的情况下,有一定概率产生线程安全的问题,也就是说,lock 临界区内的代码,有一定的概率会执行超过100次(假使每次执行num都自增1的情况下)。
summer_du 2021-02-10
  • 打赏
  • 举报
回复
你这num==2的时候,根本就进num++这个方法了。。这是个死循环。。
qq_39936465 2021-02-10
  • 打赏
  • 举报
回复
引用 楼主 Wyouxia 的回复:
为什么我的线程在调用的时候只能循环一次,但是将num++放在if语句的下面就可以正常循环呢?
因为num一直等于2 ,循环还在循环只是不向屏幕输出结果了。
Ji秋风 2021-02-03
  • 打赏
  • 举报
回复
引用 3 楼 立青_ 的回复:
笑死我了
对于年轻人要多点包容。 num++,拿到if外面。
我只爱钱 2021-01-21
  • 打赏
  • 举报
回复
我有点好奇,你的不等于为什么是那样的
立青_ 2021-01-21
  • 打赏
  • 举报
回复
笑死我了
YangjulongTrue 2021-01-17
  • 打赏
  • 举报
回复
其实 一直 在循环 只不过你没有打印 所以看不出来 你可以debug看一下

62,614

社区成员

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

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