最赞回答 / 我梦寐以求是真爱与自由
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
最赞回答 / 慕婉清0689395
因为ArmyRunable类继承了runnable接口,而且thread中有一个构造方法可以通过runnable对象去实例化一个thread对象,所以我们可以用ArmyRunnable类去进行父类引用子类对象去实例化一个runnable对象,最后得到thread对象当然可以调用Thread.CurrentThread 方法和yield() 方法啊。
2017-06-08
最新回答 / Mad_Man_
mmt.start();ddt.start();try { Thread.sleep(5000);} catch (InterruptedException e1) { // TODO Auto-generated catch block e1.printStackTrace();}mm.mm=false;dd.mm=false;这样就好了,原先可能是你没有让Stage线程休眠,然后程序运行到mmt.start(); ddt.start();后就接着运行mm.mm=false; dd.mm=false;了...
2017-05-02