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
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
相关文章推荐
- java中什么是线程安全给出一个例子
- java中什么是线程不安全给出一个例子
- java中Timer的概念是什么举一个例子
- java中给出一个主线程要join子线程的例子
- java中给出一个子线程如何捕获主线程异常的例子
- java中请给出一个return this的例子。
- Java中实例是什么意思?补充:new 一个对象是实例吗? 能举个小例子吗?
- java中给出一个多线程TCP的ServerSocket例子?
- java中线程优先级是怎么回事给出一个例子
- java中给出一个主线程如何捕获子线程异常的例子
- Java JDBC连接的一个例子
- .Net 2.0开始支持泛型,下面给出摘录一个MSDN上关于泛型的例子
- JAVA中String.split的一个小例子
- 一个java多线程的例子
- 一个基于RSA算法的Java数字签名例子
- 用JAVA操作WORD的一个例子
- 使用JSP + JAVABEAN + XML 开发的一个例子
- 使用JSP + JAVABEAN + XML 开发的一个例子
- 用java接收lotus邮件一个完整例子
- 反编译:java代码中含有同步和异常的反编译前后代码对照的一个例子(xiongjy)