线程调度器的不可预见性
2016-10-24 10:15
141 查看
看HeadFirtJava中有一个很有趣的例子能够显示出线程调度的一个不可预见性,看下面的demo
public class TestDemo {
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
thread.start();
System.out.println("主方法执行。。。");
}
}
class MyRunnable implements Runnable {
@Override
public void run() {
go();
}
private void go() {
doMore();
}
private void doMore() {
System.out.println("你说神奇不神奇");
}
}
输出结果1:main()启动新线程;调度器把主线程搁置以执行新的线程,调度器执行一下新线程就回到主线程,调度器回到新的线程继续执行,再度回到主线程执行打印输出(机器的性能很重要);最后,新线程执行到最后。
主方法执行。。。
你说神奇不神奇输出结果2:main()方法启动新线程;调度器搁置主线程以便执行新线程;新线程打印输出“你说神奇不神奇。。。”;执行主线程。
你说神奇不神奇
主方法执行。。。
public class TestDemo {
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
thread.start();
System.out.println("主方法执行。。。");
}
}
class MyRunnable implements Runnable {
@Override
public void run() {
go();
}
private void go() {
doMore();
}
private void doMore() {
System.out.println("你说神奇不神奇");
}
}
输出结果1:main()启动新线程;调度器把主线程搁置以执行新的线程,调度器执行一下新线程就回到主线程,调度器回到新的线程继续执行,再度回到主线程执行打印输出(机器的性能很重要);最后,新线程执行到最后。
主方法执行。。。
你说神奇不神奇输出结果2:main()方法启动新线程;调度器搁置主线程以便执行新线程;新线程打印输出“你说神奇不神奇。。。”;执行主线程。
你说神奇不神奇
主方法执行。。。
相关文章推荐
- ios app开发教程告诉你开发不可缺少的2个工具
- 不可摸数【打表】
- iOS开发笔记--设置UITextField键盘上return key不可点击
- 不可不知的电商渠道监控方式
- BlueTooth: 关于蓝牙你不可不知道的几个基础常识
- 想要成为python大神,这17个老司机收藏的国外免费学习网站不可错过!
- 经典c程序(0030) ---求不可约分数
- Python(可变/不可变类型,list,tuple,dict,set)
- 陈大惠对话中医女博士:为什么不可纵欲?
- 设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
- Java集合框架官方教程(5):集合类的同步包装器/不可变包装器
- 警告:编码UTF8不可映射字符
- 深刻理解Java中final的作用(一):从final的作用剖析String被设计成不可变类的深层原因
- unix 环境高级编程 信号二 可重入函数与不可重入函数
- numpy for matlab/octave users不可不看的入门材料
- 实践总结 - 不可错过的Angular应用技巧
- maven编码 gbk 的不可映射字符
- hdu 1999 不可摸数
- 不可复制类的原理和实现
- C#不可变类型深入解析