场景 : 某个程序在其他操作前要初始化需要的资源
在一个线程中运行初始化任务,在继续执行程序其他部分前等待此线程的终结。
解决方案 : 使用 Thread 类的 join 方法
当用一个线程对象调用此方法时,将挂起调用线程直掉被调用对象结束执行。
线程类
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());
控制类 (Main)
DataSourcesLoader dsLoader = new DataSourcesLoader(); Thread dsThread = new Thread(dsLoader, "DataSourceLoader");
NetworkConnectionsLoader ncLoader = new NetworkConnectionsLoader(); Thread ncThread = new Thread(ncLoader, "NetworkConnectionsLoader");
dsThread.start(); ncThread.start(); try { dsThread.join(); ncThread.join(); } catch (InterruptedException e) { e.printStackTrace(); }
System.out.printf("Main: Configuration has been loaded: %s\n",new Date());