介绍
先看如下代码:
重复执行多次,发现输出并不是按照线程的启动顺序来执行。因为这个里面涉及到CPU对线程的调度问题。
thread1
thread3
thread2
如何让thread1,thread2,thread3顺序执行呢?
方法1
通过join方法去保证多线程顺序执行
可以看到输出一直是如下
thread1
thread2
thread3
join是怎么实现这个功能的呢?
join方法让主线程等待子线程结束以后才能继续运行,因此保证了线程的顺序执行
方法2
使用单例线程池,用唯一的工作线程执行任务,保证所有任务按照指定顺序执行
ExecutorService executorService = Executors.newSingleThreadExecutor();
这个会把线程放在一个FIFO队列,依次执行线程
输出一直为
thread1
thread2
thread3
目的达到
最近有人私信小编有没有面试视频,然后就总结了一波,基本涉及到了所有的面试题
如何获取呢?
转发后加群,681299970,备注 头条 即可
閱讀更多 Java識堂 的文章