前言
synchronized是我们在遇到多线程问题时,经常使用到的关键字。本文我们将深入了解synchronized。
synchronized 简介
synchronized是一个重量级锁。相对于Lock来说,它会显得那么笨重。不过在Javs SE 1.6对synchronized进行的各种优化后,它的性能跟Lock差不多了。
synchronized 使用方法
分类 | 被锁对象 | 示例 |
---|---|---|
实例方法 | 类的实例对象 | // 实例方法,锁住的是该类的实例对象 public synchronized void method(){ … } |
静态方法 | 类对象 | // 静态方法,锁住的是类对象 public static synchronized void method(){ … } |
实例对象 | 类的实例对象 | // 同步代码块,锁住的是该类的实例对象 synchronized)(this){ … } |
类对象 | 类对象 | // 同步代码块,锁住的是类对象 synchronized)(Demo.class){ … } |
任意实例对象 | 实例对象 | // 同步代码块,锁住的是指定的实例对象 // String作为锁的对象 String flag = “”; synchronized)(flag){ … } |