`

Java Thread join() 的用法

阅读更多

        Java Thread中, join() 方法主要是让调用该方法的thread完成run方法里面的东西后,再执行join()方法后面的代码。示例:

package com.bijian.study;

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
    }
}

运行结果:

Counter = 0 Counter = 1 Counter = 2 Counter = 3 Counter = 4 Counter = 5 Counter = 6 Counter = 7 Counter = 8 Counter = 9 Counter = 10 
i = 0 i = 1 i = 2 i = 3 i = 4 i = 5 i = 6 i = 7 i = 8 i = 9 i = 10

        如果去掉t1.join()这个语句过后, 输出的书序是乱的, 如下所示:

Counter = 0 Counter = 1 i = 0 Counter = 2 i = 1 Counter = 3 i = 2 Counter = 4 i = 3 Counter = 5 i = 4 Counter = 6 i = 5 Counter = 7 i = 6 Counter = 8 i = 7 Counter = 9 i = 8 Counter = 10 i = 9 
i = 10 

        加上这个语句过后, 就会按照顺序输出,从某种意义上说实现了同步。

分享到:
评论

相关推荐

    Java线程中wait,await,sleep,yield,join用法总结.pdf

    以上就是对Java线程中wait、await、sleep、yield、join用法的总结。这些方法在实际开发中,对于控制多线程运行的时序和协调非常关键。理解这些方法的正确使用方式是掌握Java并发编程的基础。同时,使用时需特别注意...

    Java Thread Programming

    Java提供了多种线程控制方法,如start()用于启动线程,run()是线程的主要执行体,join()使当前线程等待该线程终止,sleep()使线程暂停执行一段时间,yield()让当前线程暂停,让其他线程有机会运行,synchronized...

    java 中Thread.join()的使用方法

    在Java编程语言中,`Thread.join()`方法是一个非常重要的同步工具,它允许一个线程(调用者)等待另一个线程(被调用者)执行完成。`Thread.join()`的使用能够有效地解决多线程环境中的顺序执行问题,确保线程间的...

    浅谈java线程join方法使用方法

    浅谈Java线程join方法使用方法 Java中的线程join方法是一种实现线程同步的方式,可以将原本并行执行的多线程方法变成串行执行的。在Java中,线程join方法的作用是使当前线程等待另一个线程的结束,然后再继续执行...

    Java中Thread.join()的使用方法

    Java 中 Thread.join() 的使用方法 Thread.join() 是 Java 中的一个重要方法,该方法允许一个线程等待另一个线程的执行完成。下面我们将详细介绍 Thread.join() 的使用方法、源码分析和示例代码。 1. join() 的...

    java 携子之手 与子偕老(join)

    在实际应用中,join()方法通常配合Thread类的start()方法一起使用。start()方法用于启动新线程,而join()方法则用于确保当前线程等待该线程执行结束。例如: ```java Thread thread = new Thread(new Runnable() { ...

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

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

    java thread

    05_线程同步_1.avi 至 09_线程同步_5.avi 文件很可能是深入讨论了各种线程同步方法的使用,例如`synchronized`关键字的作用、死锁避免、线程间通信的实现以及如何在实际编程中应用这些概念。 04_举例.avi 文件可能...

    Java Thread Programming (Sams) java线程编程(含code)

    - 定时等待(Timed Waiting):线程被调用了`sleep()`, `join()`, 或者`Object.wait(long timeout)`方法,有特定等待时间。 - 结束(Terminated):线程执行完毕或被中断。 4. **线程同步** - `synchronized`...

    Java线程(Java.Thread)(中英版)

    这些书籍可能会详细解析`synchronized`关键字、`wait()`, `notify()`和`notifyAll()`方法,以及如何使用`java.util.concurrent`包中的工具类,如`ExecutorService`, `Semaphore`, `CyclicBarrier`等来管理和控制线程...

    java Thread

    - Java线程有10个优先级,`Thread.MIN_PRIORITY`(1)到`Thread.MAX_PRIORITY`(10),默认优先级为`Thread.NORM_PRIORITY`(5)。然而,线程优先级并不保证执行顺序,实际调度依赖于操作系统的线程调度策略。 8. ...

    java_Thread.rar_java thread runable_thread runable

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

    java基本教程之join方法详解 java多线程教程

    `join()`方法定义在`java.lang.Thread`类中,其主要功能是使调用该方法的线程(这里称为调用线程)暂停执行,直到目标线程(即`join()`方法所在的线程)执行完毕。这样,可以确保调用线程在目标线程执行完成后才...

    Java中Runnable和Thread的区别

    `Thread`类在`java.lang`包中定义,提供了一系列与线程生命周期管理相关的功能,如`start()`, `join()`, `interrupt()`等。 #### 优缺点 - **优点**:继承`Thread`类可以直接调用`Thread`类的其他方法,如设置线程...

    Java线程中yield与join方法的区别Java开发J

    在Java多线程编程中,理解并正确使用`yield`和`join`方法是至关重要的。这两个方法都属于线程控制策略的一部分,但它们的作用和使用场景有所不同。 首先,我们来详细探讨`Thread.yield()`方法。这个方法的目的是让...

    浅谈Java线程Thread.join方法解析

    可以看到,join方法中使用了wait方法来实现等待,但是在这里没有看到哪里调用notify或者notifyAll方法。如果没有调用的话,那调用方线程会一直等待下去,那是哪里调用了唤醒它的方法呢? 通过查证得知,原来在线程...

    Java Thread多线程全面解析

    Java Thread多线程全面解析涵盖了Java编程中关于线程的重要概念和实践技巧。在Java中,多线程是并发编程的基础,允许程序同时执行多个任务,提高系统资源利用率和应用程序的响应速度。 线程的生命周期包括五个基本...

    Java线程超时监控

    另外,`java.lang.Thread`类也提供了一种实现线程超时的方法,通过使用`join`方法。`join`可以等待某个线程结束,同时可以设置一个等待时限。 ```java Thread thread = new Thread(() -&gt; { // 需要监控的线程代码 ...

    译文:Fork and Join: Java Can Excel at Painless Parallel Programming Too!

    总结来说,Fork/Join框架是Java并发编程的重要进步,它通过提供一种易于理解和使用的并行编程模型,降低了编写高效并发程序的难度。结合java.util.concurrent包中的其他工具,开发者可以构建出既安全又高效的并发...

Global site tag (gtag.js) - Google Analytics