为了账号安全,请及时绑定邮箱和手机立即绑定

两个线程交替的疑问

Java中某条线程是否只有当显式调用了sleep()方法时,才会休眠并让出处理器资源?我的运行结果中两个线程的确是交替运行,但不是运行完整10次就进行交替。也就是说某一线程的sleep()方法还未被调用时,另一线程就竞争到了cpu资源。这个结果是否正确呢?多谢回答~

正在回答

3 回答

你得结果也是正常的。简单说只有Running的线程拥有CPU,CPU时间片用完就释放。这就是为什么还没调用sleep(),另一个线程就执行了。要把整个问题说清楚需要了解Java线程的状态及迁移的知识。你可以参考慕课上的《细说Java多线程》

1 回复 有任何疑惑可以回复我~

我也在想这个问题

0 回复 有任何疑惑可以回复我~

这个和操作系统有关,Linux按照时间分片,Windows要等线程主动释放;在Java中,调用静态方法会造成主动释放。

你可以这样测试:A和B两个线程,里面变量从0加到N(随意),循环结束之后再调用System.out.println();Windows上应该是先start()的那个线程首先输出,有一点需要注意的是,除了最后的输出以外,不要有任何的静态方法调用

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

两个线程交替的疑问

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信