sleep(time)

  • 挂起线程(释放cpu)并修改其运行状态
  • 用sleep()提供的参数来设置一个定时器。
  • 当时间结束,定时器会触发,内核收到中断后修改进程(或线程)的运行状态。例如线程会被标志为就绪而进入就绪队列等待调度。

Thread.Sleep(0)的作用,就是“让出cpu,会触发操作系统立刻重新进行一次CPU竞争”

wait(), notify()

https://blog.csdn.net/boling_cavalry/article/details/77793224

wait 和notify 必须用在Synchronize块中

  1. 首先线程获得锁

    1. 判断锁是否是无锁状态, 如果是 则获得锁
    2. 如果不是则判断锁持有者是否是自己
    3. 如果是则重入state+1
    4. 如果不是则锁膨胀, 判断持有锁的线程是否还需要锁不需要则释放
    5. 然后抢锁, 将当前线程id写入对象的对象头mark空间
  2. 当线程在同步块中调用wait方法
    1. 将当前线程封装成ObjectWaiter对象 放入waitSet中
    2. 将当前线程的park方法 进行挂起
    3. 释放锁 移除锁标记
  3. 当线程在同步块中执行notify方法
    1. 从waitSet中获得第一个ObjectWaiter对象
    2. 使用ObjectWaiter对象的线程抢夺锁
  4. 当线程退出同步块 释放锁
    1. 移除锁标记

Java基础系列之常用方法底层实现相关推荐

  1. 夯实Java基础系列23:深入理解Java继承、封装、多态的底层实现原理

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  2. 夯实Java基础系列3:一文搞懂String常见面试题,从基础到实战,更有原理分析和源码解析!

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  3. 夯实Java基础系列17:一文搞懂Java多线程使用方式、实现原理以及常见面试题

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  4. string substring的用法_夯实Java基础系列3:一文搞懂String常见面试题,从基础到实战...

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  5. 夯实Java基础系列9:深入理解Class类和Object类

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  6. 夯实Java基础系列22:一文读懂Java序列化和反序列化

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  7. 夯实Java基础系列11:深入理解Java中的回调机制

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  8. 夯实Java基础系列19:一文搞懂Java集合类框架,以及常见面试题

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  9. Java基础-Date类常用方法介绍

    Java基础-Date类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.毫秒值概念 我们在查阅Date类的API文档时,会发现这样的一句话:"The cl ...

最新文章

  1. 建立实体-关系模型1
  2. python比较excel表格内容并提取_python 实现excel数据的提取和整理
  3. 【数字信号处理】相关函数 ( 周期信号 | 周期信号的自相关函数 )
  4. 百度地图,加载顺序异步问题,用定时器解决
  5. 【深度学习】ICCV2021|性能优于何恺明团队MoCo v2,DetCo:为目标检测定制任务的对比学习...
  6. 深度学习的实用层面 —— 1.11 神经网络的权重初始化
  7. java接口自动化+博客园_java+接口自动化+eclipse之-----环境搭建
  8. python如何写代码_如何写出优雅的Python代码?
  9. php随机显示怎么,PHP 随机显示
  10. php limit计算结果,php – 在应用LIMIT之前获取结果数量的最佳方式
  11. SpringBoot自动装配原理与自己写一个starter
  12. 人民币对美元汇率中间价报6.7592元 上调23个基点
  13. cam350菜单怎么切换成中文_CAM350菜单中文详解
  14. Centos7二进制安装Mysql8.0.20
  15. Redis6.2.6下载和安装
  16. SystemGenerator:数字信号处理之开发准备、流程预演
  17. python爬取b站搜索结果播放地址_Golang 爬虫快速入门 | 获取B站全站的视频数据
  18. ArcGIS中添加在线地图(影像图、街道图、天地图等)无需插件
  19. 小白装openstack(二) 安装NTP服务
  20. 一文读懂 协方差矩阵

热门文章

  1. JAVA学习生涯开始
  2. 多张图片怎么调整dpi?教你一招批量调整dpi的小技巧
  3. 深入浅出的javascript的正则表达式学习教程
  4. Java—数据类型与运算符
  5. 企业级部署解决方案CRM 2011安装在Windows Server 2012
  6. C语言仿天天酷跑小游戏
  7. 思迅软件思迅餐饮软件6找回会员卡信息数据库修复误删除修复
  8. 【离散数学】阿贝尔群和循环群
  9. 让AI 作画更快一点
  10. 攻防世界-wp-MISC-新手区-9-SimpleRAR