一、线程调度顺序
前提: 如果一个进程中同时开三个线程,那么谁先谁后呢?
- 代码实现案例:
/**
* 测试线程的执行顺序
*/
public class TestThreadSort implements Runnable{
public static void main(String[] args) {
//使用实现Runnable方法的好处就是可以多实现
TestThreadSort testThreadSort = new TestThreadSort();
//开启线程1
new Thread(testThreadSort,"丁大大").start();
//开启线程2
new Thread(testThreadSort,"甲大大").start();
//开启线程3
new Thread(testThreadSort,"乙大大").start();
}
@Override
public void run() {
//Thread.currentThread().getName() ---获取当前线程的名称
for (int i=0;i<100;i++){
System.out.println(Thread.currentThread().getName()+"看了第"+i+"本书");
}
}
}
-
执行结果如下:
-
注意项:
- 开启一个线程时,即new Thread(实例化对象,name),为开启的线程取了一个名字。
- 在线程内部可使用Thread.currentThread().getName() 获取该线程本身的名称。
-
小结:
- 通过以上的代码执行结果来看,我们可以得出结论,线程的执行并不是按照指定的顺序来,比如我依次开启线程1、2、3,但实际的执行结果并不受我们的控制,而是由cpu调度器随机调度执行的!
二、主线程的执行
- 代码实现案例
- 理论上结果:等待三个人看完,最后才是老师看书。
- 实际结果如下:
- 结论:主线程(main()线程)优先执行。
Java多线程扩展:Java多线程学习汇总
路漫漫其修远兮,吾必将上下求索~
如果你认为i博主写的不错!写作不易,请点赞、关注、评论给博主一个鼓励吧**转载请注明出处哦**