`

多线程中yield和join的作用

 
阅读更多

join的作用在源码中就一句话Waits for this thread to die

其实这句话有点不准确,它少了一个主语:父线程。完整的表述应该是parent thread waits for this thread to die。意思就是调用这个线程的父线程会处于阻塞状态知道这个线程执行完。比如:

public static void main(String[] args) throws InterruptedException
    {
         Thread thread = new Thread(new Runnable()
        {
            
            public void run()
            {
                try
                {
                    Thread.sleep(1000);
                }
                catch (InterruptedException e)
                {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                System.out.println("new Thread");
            }
        });
       thread.start();
       thread.join();
       System.out.println("main thread");
    }

这里打印信息是 new Thread 

                         main Thread

线程thread的父线程是主线程,因此thread调用join()方法后主线程阻塞知道thread执行完

 

 

 

yield方法作用其实也可以用一句话来表述:表示愿意让出当前调度的使用权

源码解释的第一段是:A hint to the scheduler that the current thread is willing to yield

      its current use of a processor. The scheduler is free to ignore this hint.

暗示调度者这个线程愿意让出对当前调度的使用,调度者可以无视这个暗示。

讲道理对于计算机来说准确性很重要我只能说对这个方法很无语

 

分享到:
评论

相关推荐

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

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

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

    在Java编程中,多线程的使用是实现程序并发运行的重要手段。本文将总结五个关键的线程控制方法:...同时,使用时需特别注意这些方法中隐含的线程安全问题和锁的释放机制,这直接关系到多线程程序运行的正确性和效率。

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

    之前,我讨论了一个wait()和sleep()方法区别的问题,这一次,我将会讨论join()和yield()方法的区别。坦白的说,实际上我并没有用过其中任何一个方法,所以,如果你感觉有不恰当的地方,请提出讨论。  Java线程调度...

    【IT十八掌徐培成】Java基础第08天-01.多线程-yield.zip

    今天我们将深入探讨由IT十八掌徐培成讲解的Java基础课程中的第八天主题——多线程,特别是关于`yield()`方法的知识点。 首先,我们要明白什么是线程。线程是程序执行的最小单位,每个线程都代表程序的一个独立控制...

    线程中sleep、join、yield、wait的区别

    在Java多线程编程中,线程控制是非常关键的一部分,涉及到如何协调多个线程的执行顺序和资源分配。本文将详细解析线程中`sleep()`, `join()`, `yield()`, 和 `wait()` 四个方法的区别。 1. `sleep()` `sleep()` ...

    java多线程Demo

    Java多线程是Java编程中的一个重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应速度。在Java中,实现多线程有两种主要方式:继承Thread类和实现Runnable接口。 1. 继承Thread类: 当我们创建一个新...

    Java多线程技术精讲

    Java多线程技术是Java编程中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在现代计算机系统中,多线程是实现并发处理的关键技术,尤其在服务器端应用和高性能计算中不可或缺。 ...

    pb多线程实现的例程

    通过学习和实践这个“pb多线程实现”的例程,开发者可以深入理解多线程编程的原理,掌握如何在实际项目中运用多线程提高程序效率,以及如何处理线程同步和通信等问题。不过,由于没有具体的代码示例,这里只能提供...

    sleep()、wait()、yield()和join()方法特点及区别.docx

    在多线程编程中,控制线程的执行顺序和资源分配是至关重要的。本文将深入探讨Java中的四个关键方法:`sleep()`, `wait()`, `yield()`和`join()`,以及它们各自的特点和区别。 首先,我们来看`sleep()`和`wait()`的...

    多线程经典例子

    在编程领域,多线程是实现并发执行任务的关键技术,特别是在现代计算机系统中,它能够充分利用多核处理器的计算能力,提高程序的运行效率。本文将深入探讨多线程的经典应用,以及如何在实际开发中有效地使用多线程。...

    多线程原理详解

    总之,多线程编程是Java中不可或缺的一部分,它涉及到线程的创建、管理、同步和异常处理等多个方面。理解并熟练掌握这些知识点,能够帮助开发者编写出高效、稳定的并发程序。在实际开发中,应根据具体需求选择合适的...

    java 多线程编程指南

    并发控制是多线程编程中的重要课题,主要涉及同步和互斥。Java提供了synchronized关键字来实现线程安全,它可以修饰方法或代码块,确保同一时间只有一个线程能访问特定的代码。此外,还有volatile关键字,用于确保...

    Java多线程详解(超详细)_狂神说笔记完整版_项目代码_适合小白随课程学习

    在Java编程中,多线程是一种重要的技术,它使得程序能够同时执行多个任务,提高系统的效率和响应性。本教程将详细讲解Java中的多线程概念,包括线程的创建、状态、同步以及高级主题,旨在帮助初学者逐步掌握这一关键...

    经典c++多线程演示

    C++多线程是现代编程中的重要概念,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在本“经典C++多线程演示”中,我们将深入探讨C++11及后续标准引入的多线程库,如何创建、启动、调度、同步、挂起...

    java多线程进阶

    Java多线程是Java编程中的核心概念,尤其对于高级开发者来说,掌握多线程的深入理解和应用至关重要。这本书“java多线程进阶”显然旨在帮助读者深化这方面的理解,打通编程中的“任督二脉”,使开发者能够更加熟练地...

    java中的多线程实例详解(自己去运行看结果)

    Java中的多线程是编程领域中的重要概念,尤其在服务器端和高性能应用中不可或缺。它允许程序同时执行多个任务,从而提高系统效率和响应性。本文将深入探讨Java多线程的实例,帮助读者理解其工作原理和实际应用。 ...

    JAVA多线程(精典总结)

    Java多线程是Java编程中不可或缺的部分,尤其在...在实际编程中,合理利用多线程技术可以提升系统的响应速度和并发处理能力,但同时也需要注意线程安全问题,防止出现竞态条件、死锁等问题,确保程序的正确性和稳定性。

    多线程】_认识多线程

    在计算机科学中,多线程是一种程序执行方式,允许单个进程内同时执行多个不同的线程,从而提高系统的效率和响应性。本文将深入探讨多线程的概念、创建与使用,以及在实际应用中需要注意的事项。 一、多线程的基本...

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

    **线程 与 线程 的关系:**在同一个进程里,多个线程共享内存空间和系统资源 一个进程中包含多个线程,只有一个主线程 线程的休眠是指让线程暂时停止执行一段时间,然后再继续执行。在休眠期间,线程不会占用CPU资源...

    多线程,day2,B站狂神,代码Lesson.rar

    在Java编程语言中,多线程是程序设计中的一个重要概念,尤其在开发高效能和响应迅速的应用时。"多线程,day2,B站狂神,代码Lesson.rar"这个资源可能是一个关于Java多线程的第二日课程,由B站(哔哩哔哩)上的一位...

Global site tag (gtag.js) - Google Analytics