Java并发编程示例(六):等待线程执行终止
在某些场景下,我们必须等待线程执行完成才能进行下一步工作。例如,某些程序在开始执行之前,需要先初始化一些资源。这时,我们可以启动一个线程专门来做初始化任务,等到线程任务完成后,再去执行其他部分。
为此,Thread类为我们提供了join()方法。当我们使用线程对象调用此方法时,正在掉调用的线程对象将被推迟到被调用对象执行完成后再开始执行。
在本节,示例程序演示等待初始化方法完成后,再去执行其他任务。
知其然
按照下面所示步骤,完成示例程序。
1.创建一个名为DataSourcesLoader的类,并且实现Runnable接口。代码如下:
publicclassDataSourcesLoaderimplementsRunnable{
2.实现run()方法,向控制台打印出一条信息以说明开始执行,然后睡眠4秒钟,再向控制台打印一条信息来说明线程执行结束。代码如下:
@Override publicvoidrun(){ System.out.printf("Beginningdatasourcesloading:%s\n", newDate()); try{ TimeUnit.SECONDS.sleep(4); }catch(InterruptedExceptione){ e.printStackTrace(); }
System.out.printf("Datasourcesloadinghasfinished:%s\n", newDate()); }