我是靠谱客的博主 温暖世界,最近开发中收集的这篇文章主要介绍java编程思想练习题-第21章练习1-yield,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目:实现一个Runnable。在run()内部打印一个消息,然后调用yield()。重复这个操作三次,然后从run中返回。在构造器中放置一条启动消息,并且放置一条在任务终止时的关闭消息。使用线程创建大量的这种任务并驱动他们。

 

package test;
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=1;i<=10;i++){
new Thread(new runabletest()).start();;
}
}
}
class runabletest implements Runnable{
public String
startstr="start!";
public
String stopstr="stop!";
static int num=0;
public int id;
public runabletest(){
num++;
id=num;
startstr="#"+id+"
"+startstr;
stopstr="#"+id+"
"+stopstr;
System.out.println(startstr);
}
@Override
public void run() {
for(int i=1;i<=3;i++){
System.out.println("#"+id+" loop"+i);
Thread.yield();
}
System.out.println(stopstr);
}
}

 结果是:

#1
start!
#2
start!
#3
start!
#1 loop1
#2 loop1
#2 loop2
#1 loop2
#1 loop3
#1
stop!
#2 loop3
#2
stop!
#4
start!
#3 loop1
#3 loop2
#5
start!
#4 loop1
#3 loop3
#4 loop2
#3
stop!
#4 loop3
#4
stop!
#6
start!
#7
start!
#5 loop1
#5 loop2
#5 loop3
#5
stop!
#7 loop1
#6 loop1
#8
start!
#6 loop2
#7 loop2
#7 loop3
#6 loop3
#6
stop!
#7
stop!
#9
start!
#8 loop1
#8 loop2
#8 loop3
#8
stop!
#10
start!
#9 loop1
#9 loop2
#9 loop3
#9
stop!
#10 loop1
#10 loop2
#10 loop3
#10
stop!

 如果把yield去掉的话结果是:

#1
start!
#2
start!
#3
start!
#1 loop1
#1 loop2
#1 loop3
#1
stop!
#4
start!
#2 loop1
#5
start!
#2 loop2
#2 loop3
#2
stop!
#5 loop1
#5 loop2
#5 loop3
#5
stop!
#3 loop1
#3 loop2
#3 loop3
#3
stop!
#4 loop1
#4 loop2
#4 loop3
#4
stop!
#6
start!
#7
start!
#8
start!
#7 loop1
#7 loop2
#7 loop3
#7
stop!
#6 loop1
#6 loop2
#6 loop3
#6
stop!
#9
start!
#10
start!
#9 loop1
#9 loop2
#9 loop3
#9
stop!
#10 loop1
#10 loop2
#10 loop3
#10
stop!
#8 loop1
#8 loop2
#8 loop3
#8
stop!

 结论:我们发现把yield去掉之后每个线程的三次循环基本都一下子输出了,因为任务比较简单可以在一个时间片内完成,所以在中途没有切换上下文。而增加了yield之后,执行完一次循环之后,该线程有很大几率被切换掉。

最后

以上就是温暖世界为你收集整理的java编程思想练习题-第21章练习1-yield的全部内容,希望文章能够帮你解决java编程思想练习题-第21章练习1-yield所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部