本文主要讲解“与java线程相关的知识点有哪些”。本文的解释简单明了,易学易懂。请跟随边肖的思路一起学习和学习“java线程相关的知识点有哪些”!
00-1010读取当前值
计算结果值
将当前值与内存值进行比较。
更新新值
ABA问题,添加额外字段
底层原语锁定(硬件锁定信号)cmpxchg
00-1010对象头(markword,class point,在64位系统上,jvm打开时压缩为4字节,不打开时压缩为8字节),(数组长度-4字节)实例数据,以及对齐(通过填充系统总线位数来提高效率),如下图所示。
00-1010新款-偏置锁-轻量锁(无锁、旋转锁、自适应旋转锁)-重量级锁
偏置锁定(默认延迟4秒以上)-在对象的标记字中添加指向锁定对象的指针。
轻量级锁——竞争线程通过cas竞争指向锁对象。
重量级锁定用户模式适用于系统锁定到内核模式,之后所有其他竞争线程都处于队列状态(减少资源消耗)。
锁定:通常发生在gc的情况下,所以此时降级是没有意义的。
锁消除:当引用不会被其他线程调用时,隐式消除内部锁。
锁定粗化:对于一组具有相同操作的对象,该值锁定最外层的操作(例如while(i100)}.})
超线程:一组算术逻辑单元,两组寄存器
同步实施过程
代码层:同步
源代码监视器进入监视器退出
锁定升级
锁定cmpxchg
cas compare and swap(exchange):
当程序读取数据时,它以块为单位读取数据,以提高效率(根据cpu,64字节)。
Cpu一级和二级缓存属于核心,三级缓存是共享的。
volatile关键字的作用
线程可见性
如下所述,禁止代码重排。
内存屏障确保语句的顺序执行,底层仍然是锁。
写屏障易失性写操作写读屏障
读屏障易失性读操作读写屏障
00-1010强引用:对象o=新对象();
软引用: softreferenceObject软引用=新软引用(new object());当没有足够的堆空间时,它将被回收,这适合缓存。
弱引用: weakreference对象weak reference=new weak reference(new object());只要gc将被回收,它就适用于ThreadLocal.entry使用的弱引用,如一次性使用和缓存。使用ThreadLocal时,必须调用ThreadLocal.remove一次来释放映射的值,因为回收ThreadLocal时只会回收密钥,而不会回收条目。
虚拟引用:幻影引用对象幻影引用=新幻影引用(新对象(),新引用队列());管理堆外内存,如NIO和ZeroCopy。
感谢阅读,以上就是《java线程相关的知识点有哪些》的内容。学习完这篇文章,相信你对java线程相关的知识点有了更深的理解,具体用法还需要实践验证。在这里,边肖将为您推送更多关于知识点的文章,敬请关注!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/115172.html