NobodyUnderstandBS
2015-02-21 18:53
Java中某条线程是否只有当显式调用了sleep()方法时,才会休眠并让出处理器资源?我的运行结果中两个线程的确是交替运行,但不是运行完整10次就进行交替。也就是说某一线程的sleep()方法还未被调用时,另一线程就竞争到了cpu资源。这个结果是否正确呢?多谢回答~
你得结果也是正常的。简单说只有Running的线程拥有CPU,CPU时间片用完就释放。这就是为什么还没调用sleep(),另一个线程就执行了。要把整个问题说清楚需要了解Java线程的状态及迁移的知识。你可以参考慕课上的《细说Java多线程》
我也在想这个问题
这个和操作系统有关,Linux按照时间分片,Windows要等线程主动释放;在Java中,调用静态方法会造成主动释放。
你可以这样测试:A和B两个线程,里面变量从0加到N(随意),循环结束之后再调用System.out.println();Windows上应该是先start()的那个线程首先输出,有一点需要注意的是,除了最后的输出以外,不要有任何的静态方法调用!
深入浅出Java多线程
186088 学习 · 464 问题
相似问题