关键字 volatile详解 易失
volatile是Java中的关键字,用来修饰会被不同线程访问和修改的变量
Volatile可以看做是轻量级的 Synchronized,它只保证了共享变量的可见性。
在线程 A 修改被 volatile 修饰的共享变量之后,线程 B 能够读取到正确的值。 java 在多线程中操作共享变量的过程中,会存在指令重排序与共享变量工作内存缓存的问题。
1.在volatile 不保证原子性的时候,如何通过idea 查看编译后的代码?
1..1 参考 安装插件:使用IDEA查看java文件编译后的字节码文件
2.线程操作中,Thread.yield(),sleep 线程的生命周期。jvm中运行程序的实体是线程。
2.1 yield 即 "谦让",也是 Thread 类的方法。它让掉当前线程 CPU 的时间片,使正在运行中的线程重新变成就绪状态,并重新竞争 CPU 的调度权。它可能会获取到,也有可能被其他线程获取到。
yield 和 sleep 的异同 1)yield, sleep 都能暂停当前线程,sleep 可以指定具体休眠的时间,而 yield 则依赖 CPU 的时间片划分。 2)yield, sleep 两个在暂停过程中,如已经持有锁,则都不会释放锁资源。 3)yield 不能被中断,而 sleep 则可以接受中断。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升