iiiii)Yield的用法
马克-to-win:yield英文是屈服投降的意思。 当前线程投降就是当前线程希望释放CPU的自己的占用权,( 但系统可以忽略它这个请求。)参见: https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#yield%28%29 其中有这么句话: A hint to the scheduler that the current thread is willing to yield its current use of a processor. The scheduler is free to ignore this hint.这样的话当前线程yield时,有时虽然它自己想让别的线程执行,但系统出于优化考虑,可能还是会让当前的线程继续执行。这样的话,yield就会有一种不可控的效果,所以并行编程的最佳实践建议少用yield。
例:1.5.5
class ThreadMark_to_win extends Thread {
private String s;
public ThreadMark_to_win(String s) {
this.s = s;
}
public void run() {
for (int i = 0; i < 10; i++) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
System.out.println(s);
/*当前线程希望释放CPU的自己的占用权,( 但系统可以忽略。) */
Thread.yield();
}
}
}
public class Test {
public static void main(String[] args) {
Thread t1 = new ThreadMark_to_win("线程1");
Thread t2 = new ThreadMark_to_win("线程2");
t1.start();
t2.start();
}
}
更多请见:https://blog.youkuaiyun.com/qq_44639795/article/details/103096560
本文详细解释了Java中Thread类的yield方法的功能及其使用场景。yield方法用于提示调度器当前线程愿意放弃处理器使用权,但调度器可以选择忽略这一提示。文章通过示例代码展示了yield方法如何在实际应用中运作,并讨论了其在并行编程中的局限性和最佳实践建议。
573

被折叠的 条评论
为什么被折叠?



