不使用线程池的情况下
- 调用Thread.isAlive()方法,如果该线程没有执行完毕,会返回true;
- 调用Thread.activeCount()方法,返回当前线程组的运行线程数量,一般是1,可是IDEA执行用户代码的时候,实际是通过反射方式去调用,而与此同时会创建一个Monitor Ctrl-Break 用于监控目的。
附加知识点:如果想要当前a线程在b线程结束后才允许,可以在a线程的语句块中调用b线程的join()方法。
使用线程池的情况下
- 在线程池的线程启动后,执行线程池的shutdown()方法,该方法表示当线程池中所有线程都运行完毕后就关闭线程池。再使用线程池的isTerminated()方法判断线程池是否已经关闭判断线程是否执行完毕。
- 使用一些信号量,比如CountDownLatch或者condition等。