感谢大神百忙之中抽空看到我的问题,我在想:
当线程A调用yield方法的时候,那么就相当于线程A给其他线程一个机会去让CPU重新选择一个线程执行
那么,我可不可以理解成:
假设我的CUP有N(N>3)个核,并且这N个核都空闲,这个时候我的线程数如果少于N,那么yield方法就没有任何意义,是这么回事儿吗?
可以这么理解,而且使用yield()的目的是让相同优先级的线程之间能适当的轮转执行。
如果线程数多于内核数,也不能保证yield()达到让步目的,因为跟优先级有关、它还有可能被线程调度程序再次选中。
本身yield方法就不能保证一定能达到让步的效果,就算你线程数大于N,当前线程yield之后还是有可能被选中继续执行,
线程切换由线程调度器决定,考虑到上下文切换带来的开销,的确没什么意义。