26-案例实现
案例实现
根据以下步骤完成本案例。
1.创建一个名为 DataSourcesLoader
的类,并实现 Runnable
接口:
public class DataSourcesLoader implements Runnable {
2.实现 run()
方法。向控制台输出执行开始的信息,休眠4s,然后再输出一条执行结束的信息:
@Override
public void run() {
System.out.printf("Beginning data sources loading: %s\n",
new Date());
try {
TimeUnit.SECONDS.sleep(4);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.printf("Data sources loading has finished: %s\n",
new Date());
}
3.创建一个名为 NetworkConnectionsLoader
的类,并实现 Runnable
接口。实现 run()
方法,它与 DataSourcesLoader
的 run()
方法基本一致,但它的休眠时间为6s。
4.实现应用程序入口,创建包含 main()
方法的 Main
类:
public class Main {
public static void main(String[] args) {
5.创建一个 DataSourcesLoader
类的对象,并创建一个 Thread
对象来执行该任务:
DataSourcesLoader dsLoader = new DataSourcesLoader();
Thread thread1 = new Thread(dsLoader,"DataSourceThread");
6.创建一个 NetworkConnectionsLoader
类的对象,并创建一个 Thread
对象来执行该任务:
NetworkConnectionsLoader ncLoader = new NetworkConnectionsLoader();
Thread thread2 = new Thread(ncLoader,"NetworkConnectionLoader");
7.调用两个线程对象的 start()
方法:
thread1.start();
thread2.start();
8.用 join()
方法来等待两个线程执行结束。该方法会抛出 InterruptedException
异常,因此需要包含捕获代码:
try {
thread1.join();
thread2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
9.向控制台输出程序结束信息:
System.out.printf("Main: Configuration has been loaded: %s\n",
new Date());
10.运行案例并查看结果。