关于运行进攻次数问题?

来源:2-4 Java线程-隋唐演义实战开发---军队

我是叶霖

2018-05-27 20:27

代码中没有写if判断大于多少次,会不再循环

但是这个循环了很多次,原理是什么?

写回答 关注

4回答

  • 我梦寐以求是真爱与自由
    2018-08-27 21:57:32
    已采纳

    首先stage()本身就是一个线程,而在这个线程里又嵌了两个线程。写在Stage.Run()里面的Thread.sleep(50)只是让stage这个线程休眠50毫秒,但是并没有终止它嵌入的两个线程,所以两个军队一直在打,直到stage休眠结束执行到keepRunning = false时,三个线程都结束了,另外如果你把stage里面的Thread.sleep()注释掉你会发现它一次都没执行,我个人理解是线程异步,先编译再执行线程,编译完keepRunning已经是false了,所以不执行。

  • 八轩
    2018-06-16 14:14:50

    Thread.sleep方法让线程休眠了5毫秒,也就是说5毫秒后循环结束

  • GHW108
    2018-06-03 20:04:59

    同问,keepRunning = false;什么时候执行

    我是叶霖

    我的理解是 keepRunning = false 在线程休眠的时间后执行,这时候这个线程因为循环条件的值改变而结束线程,但是线程的循环可能没有执行完,例如循环10次,但只循环4次,这时候执行了keepRunning = false导致线程结束, 所以要在keepRunning = false后再给个线程休眠,好让线程把未完成的循环,循环完,这样就可以保证了线程的完整性.

    2018-06-04 18:40:23

    共 1 条回复 >

  • 隐身就是现在
    2018-05-27 23:22:59

    因为有for循环呀,里面的i值就是要循环几次,从0到i值

    我是叶霖

    可能是我表达不明,我想问的是什么时候执行keepRunning = false这句

    2018-05-28 19:08:46

    共 1 条回复 >

深入浅出Java多线程

带你一起深入浅出多线程,掌握基础,展望进阶路线

186088 学习 · 464 问题

查看课程

相似问题