`

sleep()、wait()、yield()、join()方法 浅析

 
阅读更多

  • 线程退出最好自己实现,在运行状态中一直检验一个状态,如果这个状态为真,就一直运行,如果外界更改了这个状态变量,那么线程就停止运行。


1.sleep()方法

 


 在指定时间内让当前正在执行的线程暂停执行,但不会释放“锁标志”。不推荐使用。


 sleep()使当前线程进入阻塞状态,在指定时间内不会执行。

 


2.wait()方法

 


     在其他线程调用对象的notify或notifyAll方法前,导致当前线程等待。线程会释放掉它所占有的“锁标志”,从而使别的线程有机会抢占该锁。


      当前线程必须拥有当前对象锁。如果当前线程不是此锁的拥有者,会抛出IllegalMonitorStateException异常。
      唤醒当前对象锁的等待线程使用notify或notifyAll方法,也必须拥有相同的对象锁,否则也会抛出IllegalMonitorStateException异常。
      waite()和notify()必须在synchronized函数或synchronized block中进行调用。如果在non-synchronized函数或non-synchronized block中进行调用,虽然能编译通过,但在运行时会发生IllegalMonitorStateException的异常。

 


3.yield方法


 暂停当前正在执行的线程对象。
 
 yield()只是使当前线程重新回到可执行状态,所以执行yield()的线程有可能在进入到可执行状态后马上又被执行。
 
 yield()只能使同优先级或更高优先级的线程有执行的机会。

 


4.join方法


      等待该线程终止。
 
      等待调用join方法的线程结束,再继续执行。如:t.join();//主要用于等待t线程运行结束,若无此句,main则会执行完毕,导致结果不可预测。

0
0
分享到:
评论

相关推荐

    多线程sleep,yield,wait区别

    `sleep`, `yield`, 和 `wait` 是 Java 中用于线程管理的三个重要方法,它们各自有着不同的功能和用途。理解它们的区别有助于编写出更加高效和可控的多线程程序。 1. **sleep() 方法** - `Thread.sleep(millisecond...

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

    本文将总结五个关键的线程控制方法:wait()、await()、sleep()、yield()和join()。这些方法各自有独特的用途和不同的工作机制。 一、wait()、notify()、notifyAll()用法 wait()、notify()和notifyAll()是Object类...

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

    本文将详细解析线程中`sleep()`, `join()`, `yield()`, 和 `wait()` 四个方法的区别。 1. `sleep()` `sleep()` 方法是 `java.lang.Thread` 类的一个静态方法,它允许当前正在执行的线程在指定的毫秒数内暂停执行。...

    T03-Sleep-Yield-Join.java

    T03_Sleep_Yield_Join.java

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

    本文将深入探讨Java中的四个关键方法:`sleep()`, `wait()`, `yield()`和`join()`,以及它们各自的特点和区别。 首先,我们来看`sleep()`和`wait()`的区别: 1. **来源不同**:`sleep()`是`Thread`类的方法,它...

    高薪程序员面试题精讲系列63之说说sleep()、yield()、join()、wait()的区别.pdf,这是一份不错的文件

    本资源主要讲解了Java中四个常用的线程控制方法:sleep()、yield()、join()和wait(),它们是Java多线程编程中的重要组成部分。下面是对每个方法的详细讲解: 1. sleep()方法: sleep()方法是Thread类...

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

    线程的基本概念、线程类、任务类、线程优先级、sleep()方法(休眠)、yield()方法(礼让)、join方法(合并)、interrupt()方法(中断),线程的生命周期 线程 与 进程 的关系:**有一个进程中至少包含一个线程 **...

    java中yieldsleep以及wait的区别.pdf

    Java中的多线程编程涉及到许多关键概念,包括`yield()`, `sleep()`, 和 `wait()`,这些都是控制线程执行的重要方法。理解它们的区别对于编写高效并发程序至关重要。 首先,`yield()`方法的作用是让当前正在执行的...

    Python yield 使用方法浅析

    ### Python `yield` 使用方法浅析 #### 一、引言 在Python中,`yield` 是一个强大的关键字,它可以将一个普通的函数转换为生成器(generator)。与传统的函数不同,生成器允许我们在代码中“暂停”并保存当前的状态,...

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

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

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

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

    安卓面试习题及答案

    `start()` 和 `run()` 方法的区别在于 `start()` 方法会使得线程进入就绪状态,等待CPU调度,而 `run()` 方法则是在调用它的线程中直接执行该方法的内容。在安卓开发中,合理管理线程对于提升应用性能和用户体验至关...

    Java sleep方法及中断方式、yield方法代码实例

    在Java多线程编程中,`Thread.sleep()`、中断机制以及`Thread.yield()`方法都是控制线程行为的重要工具。接下来我们将深入探讨这三个知识点,并通过示例代码来展示它们的实际应用。 一、`Thread.sleep()`方法 `...

    Python yield 使用浅析

    初学 Python 的开发者经常会发现很多 Python 函数中用到了 yield 关键字,然而,带有 yield 的函数执行流程却和普通函数不一样,yield 到底用来做什么,为什么要设计 yield ?本文将由浅入深地讲解 yield 的概念和...

    javascript实现yield的方法

    标题中提到的知识点为JavaScript中实现yield的方法。yield关键字在JavaScript中通常用于生成器函数中,以便函数能够在执行过程中暂停和恢复。由于JavaScript在早期版本中并不直接支持yield,因此需要其他方法来模拟...

    Pb中Yield()函数的使用[文].pdf

    // Wait up to 2 minutes for Notes to load // and the user to log on. DO //Yield control occasionally. Yield() //Is Not LOOP ``` Yield() 函数是 PB 中一个非常有用的函数,它可以提高程序的友好性和...

    yield表达式.pdf

    Python中的yield表达式是一个极为重要的概念,它是生成器(generator)的核心组成部分。生成器在处理大量数据时显得尤为有用,因为它可以逐个产生数据项而不是一次性加载所有数据到内存中。这不仅可以节省内存,还能...

    详解Java中的线程让步yield()与线程休眠sleep()方法

    本文将详细解析Java中的线程让步方法`yield()`以及线程休眠方法`sleep()`,并与线程等待的`wait()`方法进行对比。 首先,线程让步`yield()`方法的主要作用是让当前线程主动放弃执行权,让其他处于就绪状态且具有...

Global site tag (gtag.js) - Google Analytics