已采纳回答 / 慕粉2118219580
其实stage线程和军队线程之间是没有关系的,只是stage线程让军队线程开始执行而已。一个线程可以理解为一段代码,线程相互之间没有关系,除非对公共资源进行读取或修改
2017-08-03
已采纳回答 / 予别她
你这个方法没有定义返回值,然后if条件语句里面那个return不能跳出循环,输出演出结束那句话永远也到不了,所以程序会报错,可以把return改成break就好了
2017-08-03
最赞回答 / Andyanet
Thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。
2017-07-30
最赞回答 / 世上无难事_只要肯放弃
这样 wait一般等什么东西的时候就要跟for如果是“在..等”就用“at,in”等介词大的地方时in小地方at 比如:在校门口等 wait at the school gate
2017-07-26
已采纳回答 / FarFromAnyRoad
两个军队的线程都停止。舞台并没有停止join()应该就是阻塞(这个不结束,不继续运行),你不阻塞,线程程咬金还在运行,调用线程的舞台就结束了
2017-07-20
已采纳回答 / 蒂谷
估计你是想问农民军和隋军的线程运行了多久,这个的话就貌似跟舞台线程的休眠时长有关。Thread.sleep(5)那里。休眠的越久,就战斗的越久,执行到keepRunning = false的时间就越长。反之越短
2017-07-18
最赞回答 / 正方形企鹅
声明:解释转自 sxian_wang 的回答先明白两个概念:锁池和等待池。synchronized是锁池,wait、notify、notifyAll是等待池。等待池的对象是不会竞争锁的,当notifyAll后,等待池中的线程会被唤醒进入到该线程的锁池中重新竞争对象锁,重新获得锁后的对象会从wait后继续执行代码,其他对象会被阻塞,而不是wait。被阻塞的对象会等待下一次被唤醒(notify、notifyAll)。另外,notify不是线程安全的,notifyAll才是。
2017-07-06
最赞回答 / 我梦寐以求是真爱与自由
Thread.sleep(50)的作用是让stage()这个线程休眠五十毫秒,写在Thread.sleep(50)后面的就是终止条件,表面来看整个逻辑确实很奇怪,因为你发现一整套下来线程跑的次数比你想象中的多的多。而真正让线...
2017-07-04
最赞回答 / KingAmo
其他线程在他的start()方法执行后,并没有立即获得cpu时间,所以里面的run()方法没有立即执行,等到stage线程让出cpu时间后才会执行。但是你没休眠,stage线程会执行到赋值keeprunning为false,stage线程这时让出cpu时间,其他线程再试行,但已经不会打印输出语句了。如果你有休眠,stage线程执行到休眠时就让出了cpu时间,后面的给keeprunning赋值没有执行,所以可以打印、
2017-07-03