- 用在方法声明里,或者用在代码块上;
- 用在静态方法上,对象锁是当前的字节码Class对象;
- 用在普通方法上,对象锁是当前的实例对象;
- 同步代码块,对象锁是synchronized(x)为括号里面的对象;
- 一般和x.wait(), x.notify(),x.notifyAll()配合使用,进行线程间通讯的;
- 该关键字禁止指令重排,保证了数据的可见性,和操作的原子性;
- 在同步代码块上使用,在编译成字节码的时候,添加 monitorenter和monitorexit进行控制同步;
- 在方法声明中添加Synchronized关键字生命同步方法,编译成字节码会在方法的flag中添加一个ACC_SYNCHRONIZED 的标识,代码该方法是一个同步方法。
(整理笔记待完善)