并发编程之synchronized详解:性能优化与可见性保障.pdfVIP

  • 2
  • 0
  • 约2.56万字
  • 约 37页
  • 2026-05-15 发布于北京
  • 举报

并发编程之synchronized详解:性能优化与可见性保障.pdf

一、多线程

2.synchronized

在并发编程中,synchronized大家都肯定用过,一般情况下,我们会把synchronized称为重量级锁。主

要,是因为JDK1.6之前,synchronized是一个重量级锁相比于JUC的锁显得非常笨重,存在性能问

题。JDK1.6及,Java对synchronized进行的了一系列优化,性能与JUC的锁不相上下

synchronized保证方法或者代码块在运行时,同一时刻只有一个线程执行代码块,还可以保证共享变

量的内存可见性,也可以保证修饰的代码块重排序也不会影响其执行结果。

一句话:synchronized可以保证并发程序的原子性,可见性,有序性。

synchronized可以修饰方法和代码块。

方法:可修饰静态方法和非静态方法

代码块:同步代码块的锁对象可以为当前实例对象、字节码对象(class)、其他实例对象

2.1如何解决可见性问题?

JMM关于synchronized的两条规定:

线程前:必须把自己本地内存享变量的值刷新到主内存中

线程加锁时:将清空本地内存享变量的值,从而使用共享变量时需要从主内存中重新

的值

在可见性案例中,做如下修改:

//在死循环中添加同步代码

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档