首页 > 编程语言 >JUC源码讲解:wait()

JUC源码讲解:wait()

时间:2024-03-13 19:44:58浏览次数:26  
标签:JUC 释放 源码 线程 CPU wait

JUC源码讲解:wait()

抛出问题

在线程调用 wait() 时,是否会释放锁?线程的状态是什么样的?会对异常敏感吗?此时CPU资源是否会被释放呢?我们在源码中找找答案吧!

分析源码

进入 wait() 函数,可以看到这样一段代码:

public final void wait() throws InterruptedException {
    wait(0);
}

里面还有一个 wait(0) ,我们点进去看看

public final native void wait(long timeout) throws InterruptedException;

这是一个 native 方法

看到了有异常被抛出,证明是对异常敏感的

至于会不会释放锁,看看注释吧!

有这样一段话:

The thread releases ownership of this monitor and waits until another thread notifies threads waiting on this object's monitor to wake up either through a call to the notify method or the notifyAll method.

线程会释放锁资源,直到被 notify 或 notifyAll 唤醒

wait() 方法还会让出CPU时间片,使线程 由RUNNING状态转换为READY状态,进入等待队列中,是释放CPU资源的

总结

  • wait 会释放锁资源,直到被唤醒
  • 源代码中有抛出异常,是对异常敏感的
  • 会让出CPU时间片,释放CPU资源,线程进入等待队列

标签:JUC,释放,源码,线程,CPU,wait
From: https://www.cnblogs.com/acdongla/p/18071381

相关文章

  • JUC 源码讲解:sleep()
    JUC源码讲解:sleep()抛出问题sleep()能使线程进入TIMED_WAITING状态,那么,在使用sleep()会不会释放锁?被中断了会不会抛出异常?在线程使用sleep()时,CPU会不会被释放?我们在源码中和实战中看看答案吧!查看源码进入sleep()源码,可以看到它是一个native方法,但是注释很详细,让我们......
  • java毕设安卓基于Android的校园二手交易平台(开题+源码)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着移动互联网技术的飞速发展,智能手机已成为大学生生活中不可或缺的一部分。特别是在数字化校园建设的推动下,各类移动应用纷纷涌现,极大地便利了师生......
  • Java版企业电子招标采购系统源码—企业战略布局下的采购寻源
    功能模块:待办消息,招标公告,中标公告,信息发布描述:全过程数字化采购管理,打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力,为外部供应商集中推送展示与其相关的所有采购业务信息(历史合作、考察整改,绩效评价等),支持供应商信......
  • 工程管理系统简介 工程管理系统源码 java工程管理系统 工程管理系统功能设计
     鸿鹄工程项目管理系统SpringCloud+SpringBoot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统1.项目背景一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管理的提升提出了更......
  • glibc 2.23 源码分析
    1.基础知识1.1Linux进程内存布局Linux系统在装载elf格式的程序文件时,会调用loader把可执行文件中的各个段依次载入到从某一地址开始的空间中(载入地址取决于linkeditor(ld)和机器地址位数,在32位机器上是0x8048000,即128M处)。以32位机器为例,首先被载入的是.text......
  • 基于Java+Vue+Mysql的门店管理系统(附配套文档和源码)【毕业设计分享】
          前言:门店管理系统是一个综合性的软件解决方案,旨在帮助门店高效地管理日常运营、提升服务质量、优化资源配置和增强决策能力。以下是您提到的各个管理模块的简要概述:门店管理:门店信息管理:记录门店的基本信息,如门店名称、地址、联系方式、营业时间等。门店布局管......
  • 基于Java+Vue+Mysql的WMS仓库管理系统(附配套文档和源码)【毕业设计分享】
          前言: WMS(WarehouseManagementSystem)仓库管理系统是一个用于优化仓库操作、提高效率和准确性的软件解决方案。以下是针对列出的WMS仓库管理系统的各个部分的简要描述:1.订单管理订单管理是WMS的核心功能之一,涉及处理、跟踪和完成客户订单。这包括:订单录入:......
  • ChatGLM3 源码解析(五)
    PrefixEncoder#根据前缀ID获取前缀嵌入#前缀嵌入将连接到分头之后的K和V上classPrefixEncoder(torch.nn.Module):"""Thetorch.nnmodeltoencodetheprefixInputshape:(batch-size,prefix-length)Outputshape:(batch-size,prefix-length......
  • 基于springboot的社区志愿者信息活动管理系统【源码论文】
      博主介绍:......
  • 基于springboot的校园便利跑腿二手交易平台【源码论文】
      博主介绍:......