`
billxiatian
  • 浏览: 26008 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

线程Thread中的join方法

    博客分类:
  • Java
 
阅读更多

join():等待线程完成

join线程:程序中有多个线程并发执行时,在某些时候,一个线程必须等待另一个(另几个)线程执行完成后,

该线程才能继续向下执行。

Thread提供了让一个线程等待另一个线程完成的方法:join() 方法。

当在某个程序执行流中调用其他线程的join()方法时,调用线程将被阻塞,直到被join方法加入的join线程完成为止。

 

join()方法有3个版本:

join(): 无限等待,必须等到被join的线程执行完成。

join(毫秒数): 只等待多少毫秒,程序在指定的毫秒内必须完成该任务。

join(毫秒数, 纳秒数):等待多少毫秒、多少纳秒。

 

 

class MyRunnable implements Runnable{   
    public void run(){

        for(int i =0;i<10;i++){

            System.out.println(Thread.currentThread().getName()+"-----"+Thread.currentThread().getPriority()+"---"+i);
        }
    }
}

 

 

public class JoinTest {

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

        Runnable myRunnable = new MyRunnable();

        Thread myThread = new Thread(myRunnable);
        
        Thread myThread2 = new Thread(myRunnable);

        //设置优先级 (注意优先级设置最好使用Thread常量来处理)

        /**

         * int MAX_PRIORITY 10 最大优先级 (将有机会获得更多的CPU时间片) 

           int MIN_PRIORITY 1  最小优先级 

           int NORM_PRIORITY 5 默认优先级 (如果不设置就是默认)

         */
        myThread2.setPriority(Thread.MAX_PRIORITY);
        myThread.start();
        myThread2.start();
        
        System.out.println("----------------------------");

        for(int i =0;i<10;i++){

            System.out.println(Thread.currentThread().getName()+"--"+Thread.currentThread().getPriority()+"-"+i);

            if(i == 3){

                System.out.println("------join------------");

                // 谁调用join,谁就会先执行,等待join进来的线程执行完毕其他的线程才可以继续执行

                myThread.join();
       
                myThread2.join();

            }
        }
    }
}

 

join方法会更优先执行

分享到:
评论

相关推荐

    关于C#中Thread.Join()的一点理解

    是第一次在C#中接触Thread,自己研究了一下其中Thread.Join()这个方法,下面谈谈自己的理解。  Thread.Join()在MSDN中的解释很模糊:Blocks the calling thread until a thread terminates  有两个主要问题: ...

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

    在本篇文章中,我们将详细介绍Java线程Thread.join方法的解析和实现。 首先,让我们看看join方法的定义。join方法是Thread类中的一个final方法,它的作用是使当前线程等待另一个线程的结束。join方法有两个重载的...

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

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

    C#多线程学习 Thread类使用 线程等编程方法

    System.Threading命名空间中的Thread类是实现多线程的基础,提供了创建、控制和管理线程的方法。本文将深入探讨C#多线程编程,包括Thread类的使用以及线程同步的相关知识。 ### 1. Thread类介绍 Thread类是C#中处理...

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

    ThreadJoin t1 = new ThreadJoin("线程1"); ThreadJoin t2 = new ThreadJoin("线程2"); t1.start(); t1.join(); // 等待线程1结束 t2.start(); } } ``` 在上面的代码中,我们首先创建了两个线程对象t1和t2,...

    C#多线程之Thread中Thread.IsAlive属性用法分析

    在下面的示例代码中,我们创建了一个新的线程`oThread`,并使用`ThreadStart`委托传递一个方法`Back.Start`作为线程的入口点。接着,通过调用`oThread.Start()`启动线程。然而,需要注意的是,`Start()`方法的调用...

    线程创建,线程等待与清除,thread_clean.c,thread_create.c,thread_create.c,thread_exit_struct.c,thread_id.c,thread_int.c, thread_join.c, thread_join.c, thread_string.c, thread_struct.c

    `thread_create.c`、`thread_join.c`等源代码文件提供实际的编程示例,展示了如何在C语言中创建、管理线程。通过阅读和理解这些代码,开发者可以更好地理解和应用多线程技术。 总结,本主题涵盖了线程创建、等待、...

    vb 多线程 实例(thread 类创建)

    Thread类是.NET Framework中的System.Threading命名空间下的一个核心组件,它提供了创建和控制线程的方法。以下是一些关于使用Thread类创建多线程的关键知识点: 1. **创建线程对象**: 首先,我们需要创建Thread...

    线程的基本概念、线程类、任务类、线程优先级、sleep()方法、yield()方法、join方法、interrupt()方法

    线程的基本概念、线程类...在Java中,可以使用Thread类的join()方法实现线程的合并。 线程的中断是指在一个线程中断另一个线程的执行。在Java中,可以使用Thread类的interrupt()方法实现线程的中断。(run方法执行完毕)

    C#多线程之Thread中Thread.Join()函数用法分析

    本文实例讲述了C#多线程之Thread中Thread.Join()函数用法。分享给大家供大家参考。具体分析如下: Thread.Join()在MSDN中的解释:Blocks the calling thread until a thread terminates 当NewThread调用Join方法的...

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

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

    thread 线程类 实现runnable接口

    线程可以通过 join() 方法等待线程的退出。 5. 线程的优先级 Thread 类提供了 setThreadPriority() 方法来设置线程的优先级,优先级范围从 1 到 99,其中 99 是实时优先级,其他值是普通优先级。线程的优先级可以...

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

    join()方法是Thread类中的一个实例方法,当一个线程A执行了threadB.join()操作时,线程A会等待线程B执行完成后才继续执行。这通常用于需要等待子线程完成之后才继续执行的情况。 以上就是对Java线程中wait、await、...

    c++11中关于std::thread的join的详解

    C++11中关于std::thread的join详解 C++11引入了std::thread库,提供了对多线程编程的支持。std::thread库提供了两个基本操作:join和detach。join操作用于回收线程资源,避免资源泄露;detach操作用于将线程与创建...

    设计滚动字演示线程状态及改变方法

    - **start()和run()**:`start()`方法用于启动线程并执行`run()`方法中的代码。直接调用`run()`方法则不会创建新线程,而是同步执行。 - **join()**:使当前线程等待特定线程完成执行。 - **interrupt()**:中断...

    通过Thread建立线程

    `Join`方法可用于等待线程结束。 8. **线程池**:为了提高效率,C#提供了线程池。线程池中的线程可以重复使用,减少了创建和销毁线程的开销。`ThreadPool.QueueUserWorkItem`方法用于将工作项添加到线程池。 9. **...

    python使用threading获取线程函数返回值的实现方法

    `start`方法负责启动线程,通过遍历`func_list`,为每个函数创建一个新的`Thread`实例,然后调用`start`方法启动线程。`join`方法被用来等待所有线程执行完毕,确保主线程不会提前结束。 为了获取线程函数的返回值...

    C++如何创建杀死线程

    在上述示例中,我们定义了一个简单的线程函数`threadFunction`,并通过`std::thread`构造函数创建了一个线程。调用`t.join()`确保主线程等待新创建的线程执行完毕后才继续执行。 ### 二、线程的终止 #### 2.1 使用...

    JAVA多线程操作方法实用大全

    本文将深入探讨Java中的多线程操作方法,包括线程控制的基本方法、中断和睡眠以及相关示例。 首先,了解线程的基本状态至关重要。线程在运行过程中可能处于新建、可运行、运行、阻塞或死亡等状态。`isAlive()`方法...

Global site tag (gtag.js) - Google Analytics