Java基础系列之常用方法底层实现
sleep(time)
- 挂起线程(释放cpu)并修改其运行状态
- 用sleep()提供的参数来设置一个定时器。
- 当时间结束,定时器会触发,内核收到中断后修改进程(或线程)的运行状态。例如线程会被标志为就绪而进入就绪队列等待调度。
Thread.Sleep(0)的作用,就是“让出cpu,会触发操作系统立刻重新进行一次CPU竞争”
wait(), notify()
https://blog.csdn.net/boling_cavalry/article/details/77793224
wait 和notify 必须用在Synchronize块中
- 首先线程获得锁
- 判断锁是否是无锁状态, 如果是 则获得锁
- 如果不是则判断锁持有者是否是自己
- 如果是则重入state+1
- 如果不是则锁膨胀, 判断持有锁的线程是否还需要锁不需要则释放
- 然后抢锁, 将当前线程id写入对象的对象头mark空间
- 当线程在同步块中调用wait方法
- 将当前线程封装成ObjectWaiter对象 放入waitSet中
- 将当前线程的park方法 进行挂起
- 释放锁 移除锁标记
- 当线程在同步块中执行notify方法
- 从waitSet中获得第一个ObjectWaiter对象
- 使用ObjectWaiter对象的线程抢夺锁
- 当线程退出同步块 释放锁
- 移除锁标记
Java基础系列之常用方法底层实现相关推荐
- 夯实Java基础系列23:深入理解Java继承、封装、多态的底层实现原理
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- 夯实Java基础系列3:一文搞懂String常见面试题,从基础到实战,更有原理分析和源码解析!
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- 夯实Java基础系列17:一文搞懂Java多线程使用方式、实现原理以及常见面试题
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- string substring的用法_夯实Java基础系列3:一文搞懂String常见面试题,从基础到实战...
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- 夯实Java基础系列9:深入理解Class类和Object类
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- 夯实Java基础系列22:一文读懂Java序列化和反序列化
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- 夯实Java基础系列11:深入理解Java中的回调机制
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- 夯实Java基础系列19:一文搞懂Java集合类框架,以及常见面试题
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- Java基础-Date类常用方法介绍
Java基础-Date类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.毫秒值概念 我们在查阅Date类的API文档时,会发现这样的一句话:"The cl ...
最新文章
- 建立实体-关系模型1
- python比较excel表格内容并提取_python 实现excel数据的提取和整理
- 【数字信号处理】相关函数 ( 周期信号 | 周期信号的自相关函数 )
- 百度地图,加载顺序异步问题,用定时器解决
- 【深度学习】ICCV2021|性能优于何恺明团队MoCo v2,DetCo:为目标检测定制任务的对比学习...
- 深度学习的实用层面 —— 1.11 神经网络的权重初始化
- java接口自动化+博客园_java+接口自动化+eclipse之-----环境搭建
- python如何写代码_如何写出优雅的Python代码?
- php随机显示怎么,PHP 随机显示
- php limit计算结果,php – 在应用LIMIT之前获取结果数量的最佳方式
- SpringBoot自动装配原理与自己写一个starter
- 人民币对美元汇率中间价报6.7592元 上调23个基点
- cam350菜单怎么切换成中文_CAM350菜单中文详解
- Centos7二进制安装Mysql8.0.20
- Redis6.2.6下载和安装
- SystemGenerator:数字信号处理之开发准备、流程预演
- python爬取b站搜索结果播放地址_Golang 爬虫快速入门 | 获取B站全站的视频数据
- ArcGIS中添加在线地图(影像图、街道图、天地图等)无需插件
- 小白装openstack(二) 安装NTP服务
- 一文读懂 协方差矩阵