
JUC
文章平均质量分 94
秃头披风侠.
因为热爱
展开
-
Java中的锁与锁优化技术
自旋等待本身虽然避免了线程切换的开销,但它是要占用处理器时间的,所以如果锁被占用的时间很短,自旋等待的效果就会非常好,反之如果锁被占用的时间很长,那么自旋的线程只会白白消耗处理器资源,而不会做任何有价值的工作,这就会带来性能的浪费。轻量锁使用操作系统互斥量来实现,轻量级锁并不是用来代替重量级锁的,它设计的初衷是在没有多线程竞争的前提下,减少传统的重量级锁使用操作系统互斥量产生的性能消耗。:当锁的持有者线程执行完同步代码块并释放锁时,Mark Word中的锁信息会被更新,通常是重入次数的减少或锁状态的变更。原创 2023-10-06 03:01:12 · 981 阅读 · 0 评论 -
Java内存模型-JMM
每条线程还有自己的工作内存(Working Memory,可以理解为高速缓存),线程的工作内存中保存了被该线程使用的变量的主内存副本,线程对变量的所有操作(读取、赋值等)都必须在工作内存中进行,而不能直接读写主内存中的数据。先行发生是Java内存模型中定义的两项操作之间的偏序关系,比如说操作A先行发生于操作B,其实就是说在发生操作B之前,操作A产生的影响能被操作B 观察到,“影响”包括修改了内存中共享变量的值、发送了消息、调用了方法等。:内存屏障是一种同步机制,它用于控制内存操作的执行顺序和可见性。原创 2023-09-22 16:50:42 · 724 阅读 · 0 评论