慕数据8483959
2019-02-24 15:14
请问老师以及各位大神,就这个程序而已,加入yield方法跟没加效果应该是一直的吧,在隋军以及农民军各自运行的for循环里面,本来就应该发生资源的争抢,即:当隋军运行完i=1时,这个时间就有可能农民军线程获取到了资源,从而开始i=1。不知我的理解是否正确,请指教。谢谢!
你的意思是执行结果的交替,但是在线程执行中,是通过cpu分配时间进行的交替运行的
不是这样的,即使不加入yield方法,线程也会在CPU分配的时间到了之后会进行让步,比如说CPU让这个线程能执行5ms,时间到了这个线程就一定会发生让步操作,而加入了yield方法后,同样cpu让这个线程可以执行5ms,但是5ms内执行到了yield方法,线程就会执行让步操作,而不会等到5ms完才执行让步操作
深入浅出Java多线程
186068 学习 · 472 问题
相似问题