已采纳回答 / 我梦寐以求是真爱与自由
首先stage()本身就是一个线程,而在这个线程里又嵌了两个线程。写在Stage.Run()里面的Thread.sleep(50)只是让stage这个线程休眠50毫秒,但是并没有终止它嵌入的两个线程,所以两个军队一直在打,直到stage休眠结束执行到keepRunning = false时,三个线程都结束了,另外如果你把stage里面的Thread.sleep()注释掉你会发现它一次都没执行,我个人理解是线程异步,先编译再执行线程,编译完keepRunning已经是false了,所以不执行。
2018-05-27
最赞回答 / 慕斯卡3197864
run()方法只是一个普通方法,调用run()的话就相当于一个普通方法调用,并没有实现多线程。而start()方法才是真正启动线程的方法。调用start()后,此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法,这里方法 run()称为线程体,它包含了要执行的这个线程的内容,run()方法运行结束,此线程随即终止。
2018-05-23
最赞回答 / TendeRess
//内部类的话要用主类的实例去new一个内部类的实例对象,比如Actress actress = new Actor().new Actress(); Thread actressThread = new Thread(actress,"Ms.Runnable"); actressThread.start();//这样就行了~<...code...>
2018-05-21