您的位置:首页 > 编程语言 > Java开发

java中什么是Yield给出一个例子

2017-04-12 12:44 901 查看
马克-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 toyield its current use of a processor. The scheduler is free to ignorethishint.这样的话当前线程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");。。。。。。。。。。。。。。。。。

详情请进:http://www.mark-to-win.com/JavaBeginner/JavaBeginner6_web.html#Yield
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: