我们在日常的多线程开发中,可能有时会想让每个线程都按照我们指定的顺序来运行,而不是让CPU随机调度,这样可能会让我们在日常的开发工作中带来不必要的麻烦。既然有了这个需求,也就引入了本文的标题,让线程按照自己指定的顺序来运行。
有兴趣的同学可以猜想下列代码可能运行的结果:
按照正常的理解思路,上面代码的执行顺序依次应该为:t1 → t2 → t3,而实际效果则不是理想的状态。
下图为运行效果:
(1)认识Join
join可能对于一些同学来说并不陌生,此处我就不详细介绍Join是什么了,有疑问的同学可以自行baidu和google。这里我将直接介绍如何使用join来达到我们希望看到的效果!
这里主要是利用Join的阻塞效果,来达到我们的使用目的。看上图的运行结果可以得知,程序已经按照我们指定的顺序执行结束了,并得到了我们想要的结果。
其实这里可以深入的思考一下,为什么join可以达到我们想要的效果呢?接下来我们来看下源码:
进入join源码后,首先看到的是一个传入0参数的join方法,此处