桀_小孩丿
2017-07-03 00:28
我不设置sleep后,子线程直接输出结束语句了,没有执行while循环,这是为什么?
难道如果不设置sleep,那么只会执行Stage线程?所以即使在stage的run方法中即使start了其他线程,也不会执行?
其他线程在他的start()方法执行后,并没有立即获得cpu时间,所以里面的run()方法没有立即执行,等到stage线程让出cpu时间后才会执行。但是你没休眠,stage线程会执行到赋值keeprunning为false,stage线程这时让出cpu时间,其他线程再试行,但已经不会打印输出语句了。如果你有休眠,stage线程执行到休眠时就让出了cpu时间,后面的给keeprunning赋值没有执行,所以可以打印、
是不是即使调了start方法,只要没有释放资源,其他线程也无法执行?
深入浅出Java多线程
186088 学习 · 464 问题
相似问题