![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
多线程
Nameless007-Victory
这个作者很懒,什么都没留下…
展开
-
synchronized锁升级
synchronized锁升级 无锁->偏向锁 当一个对象刚实例化时,没有线程来访问它,这时这个对象是可偏向的。当第一个线程来访问它时,线程查看该对象的Mark Word(对象头里的数据结构)里是否有指向自己的线程id。这时没有,线程会使用CAS操作修改Mark Word的状态为偏向锁并且将Mark Word的线程id指向自己。线程下一次来访问时,检查到有自己的id就可以直接使用了,使用偏向...原创 2020-03-18 22:04:01 · 96 阅读 · 0 评论 -
Volatile笔记
Volatile笔记 volatile(《Java并发编程的艺术 》) 实现线程对volatile变量修改的可见性原理: 如果对volatile变量进行写操作,JVM会向处理器发送Lock前缀的指令,将这个变量所在的缓存行的数据刷新到主内存。一个处理器的缓存回写到内存会导致其他处理器的缓存无效。 volatile写的内存语义:写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量...原创 2020-03-18 13:23:48 · 71 阅读 · 0 评论 -
Java线程状态
Java线程状态 在操作系统层面线程有5种状态 新建状态(New) 线程创建,但没有启动 新建状态->就绪状态:线程启动 就绪状态(Ready) 线程启动,但还没有获得CPU时间片 就绪状态->运行状态:线程获得时间片,被CPU执行 运行状态(Runninng) 线程被CPU执行 运行状态->就绪状态:线程时间片耗尽或者主动放弃当次时间片 阻塞状态(Blocked) 同步阻塞:...原创 2020-03-16 20:41:47 · 113 阅读 · 0 评论