今天这个就来研究一个Java线程中join()方法以及interrupt()方法的使用。
线程A在线程B中调用join()方法的效果就是,线程B一直被挂起,直到等线程A执行完毕以后才继续执行,当然有join()方法中传入参数的,那就是
线程B被挂起多久,然后才开始执行。其中在调用join()方法的过程中,线程B是可以被中断的,做法就是在调用join()方法的线程上调用interrupt()
方法,但是会抛出一个异常。
interrupt()方法的作用其实不是中断线程,而是中断正在挂起的线程,使其唤醒。api中对interrupt()的描述是这样的,如果线程是调用下面方法被
阻塞的:wait(),join(),sleep()。调用interrupt()方法后将会抛出InterruptedException
异常,并且线程的interrupt status将会被清除,也就是
在抛出InterruptedException
异常后,调用interrupted()方法后将会返回false。
由上面的解释我们能够知道如果一个线程没有处于挂起的状态,调用interrupt()方法是无用的。
下面我看一看join()方法使用的小例子:
public class MyThread{
public