问答详情
源自:2-5 Java线程-隋唐演义实战开发---关键先生

yield问题

请问老师以及各位大神,就这个程序而已,加入yield方法跟没加效果应该是一直的吧,在隋军以及农民军各自运行的for循环里面,本来就应该发生资源的争抢,即:当隋军运行完i=1时,这个时间就有可能农民军线程获取到了资源,从而开始i=1。不知我的理解是否正确,请指教。谢谢!

提问者:慕数据8483959 2019-02-24 15:14

个回答

  • qq_慕圣2566072
    2019-06-20 11:00:15

    你的意思是执行结果的交替,但是在线程执行中,是通过cpu分配时间进行的交替运行的

  • 小岛农场主
    2019-05-06 23:18:38

    不是这样的,即使不加入yield方法,线程也会在CPU分配的时间到了之后会进行让步,比如说CPU让这个线程能执行5ms,时间到了这个线程就一定会发生让步操作,而加入了yield方法后,同样cpu让这个线程可以执行5ms,但是5ms内执行到了yield方法,线程就会执行让步操作,而不会等到5ms完才执行让步操作