`

Java_Thread_join()

    博客分类:
  • Java
 
阅读更多

MSDN:Blocks the calling thread until a thread terminates

1. 什么是 the calling thread?

2. 什么是 a thread?

 

运行一个程序,即开启了一个进程和至少一个线程,干活的是线程而非进程!the calling thread 我们可以认为是MainThread(或者调用线程的线程,是不是有点绕?呵呵),a thread 我们就认为是被调用的线程。

最后,我们可以这样翻译MSDN:当 a thread 调用Join方法的时候,MainThread 就被停止执行,直到 a thread 线程执行完毕。

 

下面是测试代码:

class ThreadTesterA implements Runnable {

    private int counter;

    @Override

    public void run() {

        while (counter <= 10) {

            System.out.print("Counter = " + counter + " ");

            counter++;

        }

        System.out.println();

    }

}

 

class ThreadTesterB implements Runnable {

    private int i;

    @Override

    public void run() {

        while (i <= 10) {

            System.out.print("i = " + i + " ");

            i++;

        }

        System.out.println();

    }

}

 

public class ThreadTester {

    public static void main(String[] args) throws InterruptedException {

        Thread t1 = new Thread(new ThreadTesterA());

        Thread t2 = new Thread(new ThreadTesterB());

        t1.start();

        t1.join(); // wait t1 to be finished

        t2.start();

        t2.join(); // in this program, this may be removed

    }

}

如果去掉t1.join()这个语句过后, 输出的顺序是乱的, 加上这个语句过后, 就会按照顺序输出,  从某种意义上说实现了同步。

 

ref: http://www.cnblogs.com/SkySoot/archive/2012/06/27/2566004.html

ref: http://my.oschina.net/u/2338362/blog/516237?p=1

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java_Thread.rar_java thread runable_thread runable

    在Java中,有两种方式来创建和管理线程:通过继承`Thread`类和实现`Runnable`接口。 1. 继承`Thread`类: 当你需要一个具有自定义行为的线程时,可以创建一个新的类,该类继承自`Thread`。重写`Thread`类的`run()`...

    java_Thread.rar_java 多线程_java多线程

    本资料"java_Thread.rar"提供了一些Java多线程的实践案例,对于深入理解和应用Java多线程技术具有很高的参考价值。 首先,我们要理解线程的基本概念。线程是程序执行的最小单元,每个线程都拥有自己独立的程序...

    jibu_java_1.0.0.zip_Parallel Java Code_java1.0.0_jibu_java_1.0.0

    - ** Fork/Join 框架**:Java 7引入了Fork/Join框架,基于工作窃取算法,用于高效地处理大任务。`RecursiveTask`和`RecursiveAction`是实现该框架的基础类。 - **并发集合**:如`ConcurrentHashMap`、`...

    06_Thread_java_boardkbl_

    "06_Thread_java_boardkbl_"这个主题显然聚焦于Java中的线程机制及其实际应用。线程是多任务处理的核心,它允许多个部分在同一时间运行,提高了程序的效率和响应性。下面我们将深入探讨Java线程相关的知识点。 1. *...

    MultiThread_java.rar_java thread_java并行_multithread_任务

    - **join()**:等待该线程结束,再继续执行当前线程。 - **sleep(long milliseconds)**:让当前线程睡眠指定的时间,释放CPU资源。 - **yield()**:让当前线程暂停,让其他线程有机会运行。 - **interrupt()**:...

    java_Java_学习笔记.zip

    - 线程控制:start()、sleep()、join()、yield()、interrupt()等方法。 - 同步机制:synchronized关键字和Lock接口。 这份80页的学习笔记详细讲解了这些核心概念,并使用了彩色标记突出重点内容,对于新手复习和...

    JAVA Test_Thread

    Java提供了丰富的线程控制方法,如`start()`启动线程,`join()`使当前线程等待指定线程结束,`sleep()`让线程暂时休眠,`interrupt()`中断线程,以及`yield()`让当前线程暂停执行,让其他线程有机会运行。...

    Java企业项目实训题库(马刚)_java_java项目_框架题库_

    5. **多线程编程**:包括Thread类的使用、Runnable接口的实现、线程同步与通信(如synchronized关键字、wait()、notify()、join()等方法),以及线程池的运用。多线程编程是Java在并发处理上的重要特性,通过练习可...

    JAVA_API_1.7中文.chm

    Java 7还引入了Fork/Join框架和Parallel Streams,提高了多核处理器环境下并行计算的效率。 5. **异常处理**:Java强制异常处理,通过try-catch-finally语句块捕获和处理异常。Java 7的try-with-resources语句使得...

    java-concurrency编程内部分享_java实战_java_

    Java提供了丰富的并发工具类和API,如`Thread`、`Runnable`、`ExecutorService`、`Future`等,这些工具可以帮助我们创建、管理和控制线程。同时,Java的并发模型基于监视器(Monitor),通过`synchronized`关键字和`...

    javathread类源码-java_thread_source_code:java多线程设计模式手打的

    在这个`java_thread_source_code`压缩包中,我们很可能会找到Java `Thread`类的源代码实现,这将有助于深入理解Java线程的工作原理。 在Java中,`Thread`类是`java.lang`包的一部分,它是所有用户线程的超类。我们...

    Java习题_java_

    11. **多线程**:线程的创建(Thread类、Runnable接口)、同步机制(synchronized、wait()、notify()、join()),线程池(ExecutorService)。 12. **反射**:运行时动态获取类信息,创建和调用对象,修改私有属性...

    Java线程之join_动力节点Java学院整理

    `join()`方法定义在`java.lang.Thread`类中,它使得多线程间的协作更加有序。 首先,我们来看`join()`的基本用法。在`Father`类(主线程类)中,创建了一个`Son`类(子线程类)的实例`s`,并调用`s.start()`启动子...

    java多线程_java_

    在Java中,创建线程主要有两种方式:一是继承`Thread`类,二是实现`Runnable`接口。继承`Thread`类直接复写`run()`方法,然后创建实例调用`start()`启动线程;而实现`Runnable`接口则需要将`run()`方法放在实现类中...

    深入浅出 Java 多线程.pdf_java_

    Java提供了多种线程控制机制,如sleep()方法让线程进入阻塞状态,yield()方法让当前线程暂停,让其他线程有机会运行,join()方法让一个线程等待另一个线程完成,以及synchronized关键字用于线程同步,防止数据竞争...

    JAVA-JavaThreadProgramming-Sams.zip_JAVA 设计_java 多线程_java 线程_多线程

    Java通过`java.lang.Thread`类和`java.util.concurrent`包提供了丰富的线程支持。创建线程有两种主要方式:继承Thread类和实现Runnable接口。继承Thread类直接复写run()方法,而实现Runnable接口则需要将run()方法...

    Java_API_1.7中文 高清完整CHM版

    4. **多线程**:Java 7提供了更强大的多线程支持,`java.lang.Thread`类和`java.util.concurrent`包中的`ExecutorService`、`Future`、`Callable`等接口,使得并发编程更加灵活高效。 5. **NIO.2**:Java 7引入了非...

    Java_09 多线程1

    此外,Java还提供了`Runnable`接口,它没有`Thread`类那么多的内部状态和方法,因此更适合那些不希望扩展`Thread`类的场景。通过实现`Runnable`接口,可以在类中定义`run()`方法,然后将`Runnable`实例传递给`Thread...

    java_shits.rar_class

    Java中的线程处理是通过`java.lang.Thread`类及其相关接口来实现的。本篇文章将深入探讨Java中的线程概念、创建线程的方式以及线程的管理与同步。 一、线程基础 线程允许程序并发执行,提高了资源利用率和响应速度...

    Java_Concurrency_in_Practice

    - **Fork/Join框架**:通过分治法的思想来并行处理任务,适用于大量细粒度任务的处理场景。 #### 五、结语 《Java Concurrency in Practice》不仅是一本关于Java并发编程的指南,更是一本深入理解并发编程原理和...

Global site tag (gtag.js) - Google Analytics