码迷,mamicode.com
首页 > 编程语言 > 详细

Java7并发编程实战(一) 线程的等待

时间:2015-07-09 19:23:32      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:

试想一个情景,有两个线程同时工作,还有主线程,一个线程负责初始化网络,一个线程负责初始化资源,然后需要两个线程都执行完毕后,才能执行主线程

  首先创建一个初始化资源的线程

  

技术分享
public class DataSourcesLoader implements Runnable {


    /**
     * Main method of the class
     */
    @Override
    public void run() {
        
        // Writes a messsage
        System.out.printf("Begining data sources loading: %s\n",new Date());
        // Sleeps four seconds
        try {
            TimeUnit.SECONDS.sleep(4);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        // Writes a message
        System.out.printf("Data sources loading has finished: %s\n",new Date());
    }
}
View Code

  

  然后创建一个初始化网络的线程

  

技术分享
public class NetworkConnectionsLoader implements Runnable {


    /**
     * Main method of the class
     */
    @Override
    public void run() {
        // Writes a message
        System.out.printf("Begining network connections loading: %s\n",new Date());
        // Sleep six seconds
        try {
            TimeUnit.SECONDS.sleep(6);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        // Writes a message
        System.out.printf("Network connections loading has finished: %s\n",new Date());
    }
}
View Code

  

  通过TimeUnit.SECONDS.sleep()方法; 进行休眠,

 

  然后主线程执行,通过join方法,当一个线程对象的join方法被调用时,调用他的线程将会被挂起,知道这个线程来完成这些初始化任务,我们在主线程分别调用两个Thread的join方法,那么主线程会等到两个线程都执行完毕才会执行下去。

  

public class Main {

    /**
     * Main method of the class. Create and star two initialization tasks
     * and wait for their finish
     * @param args
     */
    public static void main(String[] args) {

        // Creates and starts a DataSourceLoader runnable object
        DataSourcesLoader dsLoader = new DataSourcesLoader();
        Thread thread1 = new Thread(dsLoader,"DataSourceThread");
        thread1.start();

        // Creates and starts a NetworkConnectionsLoader runnable object
        NetworkConnectionsLoader ncLoader = new NetworkConnectionsLoader();
        Thread thread2 = new Thread(ncLoader,"NetworkConnectionLoader");
        thread2.start();

        // Wait for the finalization of the two threads
        try {
            thread1.join();
            thread2.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        // Waits a message
        System.out.printf("Main: Configuration has been loaded: %s\n",new Date());
    }
}

 

Java7并发编程实战(一) 线程的等待

标签:

原文地址:http://www.cnblogs.com/LIANQQ/p/4633832.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!