目录
我:使用join方法
我们先看一段代码:
根据我们常规的思路来想(没学线程),我们先启动t1线程,再启动t2线程,肯定是t1先执行,然后执行t2,对不对?但是我们运行多次,会出现t2先执行,t1再执行!
这是为什么?是因为当线程调用start方法时,该线程就会等待被分配CPU,一旦获取到了CPU,就可以开始工作。CPU是操作系统进行分配的,分配给谁是不确定的,有可能t1先得到CPU,先执行;有可能t2先得到CPU,先执行;有可能t1和t2同时拿到。这都是说不准的。那用什么方法可以确定线程的执行顺序呢?————使用join方法
一、join方法
把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行。比如在线程 B 中调用了线程 A 的 Join()方法,直到线程 A 执行完毕后,才会继续执行线程B。
改动一下上面的代码实现t1线程执行完毕,才执行t2线程:
不管运行多少次,都是这一个结果:
注意:join方法会抛出异常,例如:线程B中join线程A,如果外部向threadB发出中断信号,就会抛出异常。
代码示例:
结果: